# -*- coding: utf-8 -*-
"""
Created on Tue May 17 12:46:20 2016

@author: Hossam Faris
"""

import numpy
import math
import scipy.io as scio
# from continuous import rosenbrock, griewank, ackley, FletcherPowell
# from continuous import RastriginFunction, WeierstrassFunction

# define the function blocks
def prod( it ):
    p= 1
    for n in it:
        p *= n
    return p

def Ufun(x,a,k,m):
    y=k*((x-a)**m)*(x>a)+k*((-x-a)**m)*(x<(-a));
    return y
# def F1(x):
#     s=ackley(x)
#     return s
# def F1(x):
#     """Shifted sphere."""
# 
#     bias = -450.0
# 
#     offsets = [-39.3119, 58.8999, -46.3224, -74.6515, -16.7997, -80.5441,
#                -10.5935, 24.9694, 89.8384, 9.1119, -10.7443, -27.8558, -12.5806,
#                7.593, 74.8127, 68.4959, -53.4293, 78.8544, -68.5957, 63.7432,
#                31.347, -37.5016, 33.8929, -88.8045, -78.7719, -66.4944, 44.1972,
#                18.3836, 26.5212, 84.4723, 39.1769, -61.4863, -25.6038, -81.1829,
#                58.6958, -30.8386, -72.6725, 89.9257, -15.1934, -4.3337, 5.343,
#                10.5603, -77.7268, 52.0859, 40.3944, 88.3328, -55.8306, 1.3181,
#                36.025, -69.9271, -8.6279, -56.8944, 85.1296, 17.6736, 6.1529,
#                -17.6957, -58.9537, 30.3564, 15.9207, -18.0082, 80.6411,
#                -42.3912, 76.2776, -50.1652, -73.5736, 28.3369, -57.9905,
#                -22.7327, 52.0269, 39.2599, 10.8679, 77.8207, 66.0395, -50.0667,
#                55.7063, 73.7141, 38.5296, -56.7865, -89.6477, 37.9576, 29.472,
#                -35.4641, -31.7868, 77.3235, 54.7906, -48.2794, 74.2714, 72.6103,
#                62.964, -14.1446, 20.4923, 46.5897, -83.6021, -46.4809, 83.7373,
#                -79.6611, 24.3479, -17.2303, 72.3404, -36.4022]
# 
#     su=0
#     pro=1
#     z1=[]
#     for i in range(0,30):
#         z1.append(x[i]-offsets[i])
#     for i in range(0,30):
#         su=su+z1[i]**2
#     s=su+bias
#     return s

# def F1(x):
#     """Shifted sphere."""
# 
#     bias = -450.0
#     dim = len(x)
#     su=0
#     pro=1
#     z1 = x
#     for i in range(0, dim):
#         su=su+z1[i]**2
#     s=su+bias
#     return s

def F1(x):
    """
    Shifted sphere.
    [-100, 100]
    """
    global initial_flag
    bias = -450.0
    dim = len(x)
    if initial_flag == 0:
        dataFile = 'test_function_files//sphere_func_data.mat'
        offsets = scio.loadmat(dataFile)
        if len(offsets) >= dim:
            offset = offsets[:dim]
        else:
            offset = -100 + 200 * numpy.random.rand(dim)
        initial_flag = 1
    su=0
    # z1 = x - numpy.tile(offsets, (ps, 1))
    z1 = x - offsets
    for i in range(0, dim):
        su=su+z1[i]**2
    s=su + bias
    return s


# def F2(x):
#     bias = -450.0
# 
#     offsets = [35.6267, -82.9123, -10.6423, -83.5815, 83.1552, 47.048, -89.4359,
#                -27.4219, 76.1448, -39.0595, 48.8857, -3.9828, -71.9243, 64.1947,
#                -47.7338, -5.9896, -26.2828, -59.1811, 14.6028, -85.478,
#                -50.4901, 0.924, 32.3978, 30.2388, -85.0949, 60.1197, -36.2183,
#                -8.5883, -5.1971, 81.5531, -23.4316, -25.3505, -41.2485, 8.8018,
#                -24.2222, -87.9807, 78.0473, -48.0528, 14.0177, -36.6405,
#                12.2168, 18.1449, -64.5647, -84.8493, -76.6088, -1.7042,
#                -36.0761, 37.0336, 18.4431, -64.359, -39.3692, -17.714, 30.1985,
#                -18.5483, 9.6866, 82.6009, -45.5256, 5.1443, 74.204, 66.8103,
#                -63.4704, 13.0329, -5.6878, 29.5271, -0.4353, -26.1652, -6.6847,
#                -80.2291, -29.5815, 82.0422, 77.177, -11.277, 32.0759, -2.6858,
#                81.5096, 64.077, -26.1294, -84.782, -62.8768, -37.6355, 76.8916,
#                53.417, -25.3311, -38.0702, -84.1738, -11.2246, -83.4619,
#                -17.5508, -36.5285, 89.5528, 25.8794, 68.6252, 55.7968, -29.5975,
#                -58.0976, 65.7413, -8.8703, -5.3281, 74.0661, 4.0338]
# 
#     su=0
#     su2=0
#     pro=1
#     z1=[]
#     for i in range(0,30):
#         z1.append(x[i]-offsets[i])
#     for i in range(0,30):
#         su=0
#         for j in range(i):
#             su=su+z1[j]
#         su2=su2+su**2
#     s=su2+bias
#     return s

def F2(x):
    '''
    shifted Schwefel's Problem
    [-100, 100]
    '''
    global initial_flag
    bias = -450.0
    ps, dim = x.size
    if initial_flag == 0:
        dataFile = 'test_function_files//schwefel_102_data.mat'
        offset = scio.loadmat(dataFile)
        if len(offset) >= dim:
            offsets = offset[:dim]
        else:
            offsets = -100 + 200 * numpy.random.rand(dim)
        initial_flag = 1
    su2=0
    z1 = x - numpy.tile(offsets, (ps, 1))
    # for i in range(0,30):
    #     z1.append(x[i]-offsets[i])
    for i in range(0,30):
        su=0
        for j in range(i):
            su = su+z1[j]
        su2 = su2+su**2
    s = su2 + bias
    return s


# def F3(x):
# 
#     bias = -450.0
# 
#     offsets = [-32.2013, 64.9776, -38.3, -23.2582, -54.0088, 86.6286, -6.3009,
#                -49.3644, 5.3499, 52.2418, -13.3643, 73.1263, -8.5691, -20.4915,
#                -60.1487, 16.0884, -78.3319, 70.0387, -6.8521, -64.797, 65.4005,
#                -26.0233, -33.8757, 51.5893, 27.6427, -69.4485, 25.5123,
#                -59.0782, -66.5481, -51.2733, -81.776, -71.6572, 37.081,
#                -63.4248, -64.7785, 31.5299, 18.5387, 9.8342, -0.6037, 1.7346,
#                70.1605, -82.0391, -42.7368, -83.593, -85.0255, 41.1773, 4.1649,
#                -13.4505, -0.31, -38.7944, 71.2702, 65.532, 8.7753, -55.4691,
#                -20.6252, 22.2901, 13.6798, 65.6745, 75.8418, 27.8926, -15.0616,
#                -17.3036, 57.9346, -86.6326, 65.0596, 47.3884, 29.166, 65.5435,
#                3.4643, -39.814, 18.2261, 77.0446, 62.1882, -11.4, -10.6218,
#                70.1276, -40.8673, -24.4451, 52.1398, -10.5136, 29.2399, 2.1705,
#                44.0863, 81.7943, 80.0466, 88.3266, 16.6098, -50.2573, -71.6993,
#                71.5368, 61.4273, -3.6739, 77.9428, -22.3294, 64.7634, -74.2823,
#                14.1899, 37.8473, -77.7129, 28.9959]
#     matrix30D = numpy.array([[0.10164957261764876, 0.28907203592317565, -0.28676502138024335, 0.1218656189849876, 0.005564508600170918, -0.22303152232011716, -0.1947278015668383, -0.1187111843571265, 0.13820926976639555, -0.03782856975350359, 0.3145503195435482, 0.04487983403959616, 0.12570115974584642, 0.21140455372781417, -0.39649477833532365, 0.21679987185764366, 0.1734433978156879, 0.05205633230714463, -0.2286556716275806, -0.1724263688476806, -0.018765349832665177, -0.2450977619662135, -0.042909543123452715, 0.08520392393757856, -0.0028073675525156255, -0.2694346492544198, 0.204261606401297, -0.07730857500700167, 0.12110828066102342, -0.04171193079104835],
#                           [-0.06356688128738831, -0.06366532526403493, -0.09861259546241607, -0.10014364585581643, -0.14493349141275022, -0.041766780198875544, 0.36929813921174637, 0.11774688957741393, 0.19505102110413464, 0.10671307555259535, 0.1088859352715337, -0.22768051668524378, 0.019400190759083166, -0.1133194666552539, -0.08575427185145576, 0.1868394788471477, -0.2154077357793683, -0.27527136459375956, -0.24996069817518474, -0.043423348482698, 0.21024671926158417, 0.0006398686130767, 0.39221941156458107, 0.11354160173324693, -0.376237262492889, 0.011874606989760618, -0.10259435399326221, 0.17356454384129819, 0.10525158160810666, -0.1991314037147829],
#                           [0.1716067566418046, -0.039406430050305384, 0.11335061164399883, -0.4007898331836075, 0.0025266241235494162, -0.00865890279827147, 0.1396817679586794, 0.05395086229230797, 0.453574017608888, 0.27416554845722513, -0.20120102931824305, 0.10786018168385161, 0.11215507852777834, -0.08522175632536345, -0.036565694622393584, 0.07681600872811145, 0.08386159939400979, 0.25854807960750176, -0.010666415655920922, -0.05266368870433495, 0.046050815312167294, -0.2874335398245715, -0.022690225101958856, -0.036380368816751676, 0.28497320149377114, 0.20056353219635795, 0.27387241616454305, 0.20574639118739677, -0.07649882043529228, -0.07038372924617202],
#                           [0.2775954381088784, 0.03720353496167518, 0.01886152913696575, -0.2621111205488722, 0.49253846010095254, 0.10261612034343869, 0.22224353035271752, 0.2319628589073994, -0.1643220295757958, -0.2509741577638973, 0.30930716388123813, -0.13324284074970702, -0.07505331839007812, 0.04315272602362225, -0.20505081318573026, -0.007245074369464138, -0.03476662397080396, -0.1603320333170557, 0.08740311868819384, -0.1010145017960481, -0.03696687551134546, -0.015208663498307698, 0.0032052127606547872, -0.14309051818892518, 0.2689989534380106, -0.021838249567058324, -0.1580018044174444, 0.009339956251623809, -0.19639985053639275, -0.1996604797546255],
#                           [0.09871960697666698, -0.2267964611200932, -0.25254146449215054, 0.05280126298394851, -0.1933448392228727, 0.21559967509050282, 0.29372216194092204, -0.1611901846261491, 0.15819279073280304, 0.08625079760905448, 0.11385968059614064, -0.27752413275486176, 0.18174263574348862, 0.2523333098544508, 0.038988626915871225, -0.08929704696802197, 0.16819065608949466, 0.27870318713320774, 0.23598261494637288, 0.2449714908714476, -0.1932522476640285, 0.018121744120277616, 0.002403366684444846, -0.14803728856015086, 0.06941494521425752, -0.27338951414303636, -0.23466893106435363, 0.003976031572932356, 0.13804596199533947, -0.11192640635625034],
#                           [0.013549989414998383, -0.15897918291945926, -0.2576996867333399, -0.1784741533120154, 0.10885546020927407, -0.02183302426781088, 0.011850247261564915, -0.4127826328926849, 0.020744877014688398, -0.21183337363018903, -0.09655020970752953, 0.45390162748620316, -0.24632751256734814, -0.02967255646941305, 0.025745054803161548, 0.008597760929578901, -0.4171224385941253, 0.12446362871527113, -0.061058126254324656, 0.14976678374594685, 0.03424716176167472, 0.024894537273179276, 0.10477176440902719, -0.14765843280100496, -0.026208389465230564, -0.21326752653532252, 0.08590846352226907, -0.021833389903042136, -0.008177048146396568, -0.25723522049513087],
#                           [0.18507347206915797, 0.15758035573018975, 0.032477251416465375, 0.4513071535613241, 0.19946842670449538, 0.37564752754982783, 0.1214312485110197, -0.19712551151710206, -0.13251075393884892, -0.14209059076039393, -0.2882611491007309, -0.18497202703143684, 0.1268081208097443, -0.18806334431661748, 0.03705938920470933, 0.08334864078395424, -0.027389917097839694, -0.023383972318880147, -0.10674018659465959, 0.07779746056373545, -0.01173616083176247, -0.22937486599785303, 0.0688547189862504, 0.0628942659530501, 0.08653140694309171, 0.16356035494155557, 0.23597247253073309, -0.0028318894910640846, 0.21650296150916884, -0.26430986667164025],
#                           [0.13594932566906506, 0.3074191368514748, -0.15350247009863083, -0.14464531358364677, 0.04569261220518883, -0.05189948196742329, -0.05023133376759738, -0.26647001189789654, -0.00302927455868819, 0.1414678206033217, -0.14946656543309728, -0.13255052878573606, 0.254605021271442, 0.24464274994716803, 0.05335814642380131, -0.4806845568085278, -0.10429863563017264, -0.044814506124222976, -0.19163684292503938, -0.04257621258985102, 0.2755575497651694, 0.2672161378422087, 0.06221164286156204, 0.2569063146581813, 0.1622822489440353, 0.08913301921926425, -0.1249001362000181, -0.038948084012320354, -0.1427961021242354, -0.07269754815671875],
#                           [0.03906726157411894, -0.3037293537719967, -0.17810842626246476, 0.04551997284638125, -0.0475207899802671, 0.17515992233757294, -0.011875763424877415, 0.10366344641108381, -0.012206184268571521, 0.2808511082903948, 0.31488849823259546, -0.008302221147605102, -0.09358833954572465, -0.2773088560924207, 0.0722588515120634, -0.02523184139648953, -0.23915419607575888, 0.01580488647934725, -0.3394620056100733, 0.03470271487542195, -0.11175215790045064, -0.010080015898204227, -0.24868686049393682, 0.36285510582611696, 0.306165344066221, 0.017401570953453942, -0.0029360361797943135, -0.28626680055921755, 0.028433878851802184, 0.045232477160892424],
#                           [-0.26023600115933015, -0.21499575729520948, 0.1400048219411101, -0.09209391350394246, 0.19762492844673585, -0.1160680960363133, -0.1434911020093422, -0.24003309876225815, -0.03076489776643003, -0.15151291610765563, 0.1348069540937481, -0.10061335421716092, 0.15837154489540492, 0.019952736779194315, -0.18012745424870008, 0.01279656937980069, 0.08468879502374074, 0.23027670832848535, -0.3435080486516305, 0.23464834876862828, -0.06202851577285202, -0.14119879636686303, 0.23594051722401366, -0.13255055751508624, 0.04088273372406207, 0.4212886268641687, -0.2766448363731282, -0.07165403009795077, 0.08322672312454074, 0.1375581333515522],
#                           [-0.11453132803044509, 0.0005016103467944411, 0.06333082983936206, -0.190127227640041, 0.03199469160152175, 0.037475410260706395, -0.10651833891466217, 0.2586572448986541, -0.25243252362585583, 0.1818138537310842, 0.05982141932356695, -0.03827781356067774, 0.3251954662837682, 0.11502545808617184, 0.10909906763059674, -0.06221718876058416, -0.22015238873256468, 0.11693860325273177, 0.07170143938917405, 0.06353150239828748, 0.3285670598500912, -0.25477116399848937, -0.1137288063660733, -0.2803643931188687, -0.19616703427550175, -0.06479602378440377, 0.14803341992172783, -0.39103954522623335, 0.18421575628361483, -0.20567728172193261],
#                           [-0.30659016189985566, 0.13312718600651358, -0.08903401020698419, -0.26771359515466603, 0.30206030171609105, -0.07760238932793143, -0.015530031921647092, -0.1053433173399142, -0.12306870860450268, 0.03887631912384898, -0.057248130601958505, -0.07901605313688591, 0.0668144887425574, -0.10461884702108182, 0.41576604583960663, 0.35093232220868503, 0.2746140185508066, 0.006127619227398179, -0.07501588089849591, 0.09983092779737897, 0.02525310705863986, -0.005485543132883931, -0.2397536368923103, 0.245111971309485, 0.017417557421154497, -0.22523540216036722, -0.16543629204672444, 0.19938153032978617, 0.07670402454959387, -0.1707781703667471],
#                           [0.006689533991120046, -0.030659953050316126, 0.10272965845804866, -0.06721648766793795, 0.14210487621784515, 0.1355886412891005, -0.011894510681984643, -0.12056119870765801, -0.0020096507361536207, 0.25051991430019005, 0.053355200123323884, 0.10019225153719218, 0.4015622771308912, 0.17081089509279365, -2.6119138618403325e-05, 0.2672923120943625, -0.13258462573464175, -0.3126419986029899, -0.10852024420513201, 0.0854968851463823, -0.38834820528282776, 0.41292322461932435, 0.0063405624124030216, -0.2106430730674752, -0.02910727101394996, 0.009332353221005443, 0.28247031266947714, 0.03171318701282695, -0.03942522499589698, 0.09869812010307308],
#                           [-0.3260660043651632, -0.06853195731760066, 0.04554446822403763, -0.11555168208661482, -0.17825174102936656, 0.05871209551117389, -0.11765576068605013, -0.19746247788481788, -0.16204447647757614, 0.079117267317619, 0.2750498617494267, -0.1581581983694536, -0.13278630206979702, -0.15796297078398455, -0.06808686684726778, -0.3712864017036526, 0.24920682322750803, -0.22500859368947737, 0.036929236094847336, 0.07940052830938431, -0.05044498730149946, -0.08006463613957981, 0.1047415815056818, -0.08204999381930998, 0.0974309100049117, -0.044897124011706036, 0.41381288616302425, 0.1961680257619389, -0.11894214294232994, -0.29121555285078454],
#                           [-0.03374360023766475, -0.039881061790095325, -0.09792181375516726, 0.06863479065354666, 0.3395842706518788, 0.05714479700355888, -0.0911782130051627, -0.20044401863158703, 0.40432500907917257, 0.18809302975576175, 0.12077786335462118, 0.038280318129714316, -0.17521362545123614, 0.12450303785453637, 0.2856748653621252, -0.05573720949136751, 0.11466442561705872, -0.35885530134843846, 0.28373847564034077, -0.08629316234503127, 0.0031540189437001685, -0.24461095883440617, 0.16002934713033515, 0.015339169328660411, -0.1075616664377728, 0.1525273789423709, -0.04889714347341972, -0.336329439262963, 0.018316757659536213, 0.06182989319898719],
#                           [0.14240466715456365, 0.15321457769660388, 0.37285641983131007, -0.1570967543312308, 0.21981357096489298, 0.07514334794736817, -0.2284877619182089, 0.01714165231048845, 0.13215246272666265, 0.08292559321432781, 0.06504573770111124, -0.21087097725917006, -0.19185388072821907, -0.06359297493233657, -0.11947725369276378, -0.10561979878742121, -0.18288882151273664, 0.15135418938215822, 0.10826355082329937, 0.32237181825723915, -0.04194545141862241, 0.07307412581521902, 0.19921301547571402, 0.24798156337561747, -0.08376938149158719, -0.3387612275872482, 0.1023734890135393, 0.05908728748477116, 0.3016341077486798, 0.19936630448367115],
#                           [-0.020694916791897004, -0.07944697259110753, 0.08048592896466096, 0.25362252509829203, 0.09791435814140367, -0.19941627515551485, -0.06248136911318807, 0.09004818729689022, 0.047491466802618267, 0.20719020857347664, -0.08348172160319763, 0.03686344936894379, 0.031196842419712864, -0.2682155810599555, -0.021514495727349932, 0.15227077446092127, 0.23222531207789465, 0.10479941207418143, -0.0001491910378031755, -0.014117832287631294, 0.23854539677645265, 0.3242745514048472, 0.41029197491955305, -0.17292072214480383, 0.3222683108411213, -0.2556994832218574, -0.03781754758268757, -0.2707052167722046, -0.10379129395551044, -0.17573957645103017],
#                           [-0.18605460547463779, 0.25057635463170563, 0.006761729421830952, -0.03002742798534898, -0.0906983516624831, -0.01086111465067783, 0.3466793860849267, -0.07682037436277776, 0.051795188478884625, -0.14409782286993017, 0.12304688755604394, -0.23778574893246746, -0.301659094813294, 0.21241680363756868, 0.0849027994478177, 0.26136020343724486, -0.027256101625377265, 0.15920276021915677, -0.005789509652101111, 0.22819303431099655, 0.20150668235139793, 0.18442046276866697, -0.06757870156923138, -0.007779634101181586, 0.10202752769307531, 0.17086491478664886, 0.3485715522838689, -0.29048194696238494, -0.17725434398512266, 0.1615758013298807],
#                           [-0.33330180733706594, 0.0939206948762525, -0.10888451131033554, 0.2821805067660851, 0.3374348277643299, -0.27984333600756145, 0.24412147571491902, 0.17486113420742802, 0.1214913683178583, 0.2770188399139099, -0.22394849868648964, -0.028510431226916117, -0.11802827287860457, 0.023800046077563572, -0.2721862063209091, -0.2567039239372421, -0.1434977653278118, -0.03148335113170741, -0.06739983333460163, 0.22633940659978288, -0.14400590013832085, -0.06449333263849208, -0.2700692189111661, -0.1389346106574317, -0.02190877868697272, -0.05551564376087152, -0.024198146629657243, 0.09122949398093559, -0.03640203350558166, -0.03206738744403439],
#                           [-0.033260249656886946, -0.03713528807899055, 0.18905207148017175, -0.03286215638527545, -0.15683447682801296, 0.25163980730298163, 0.03809467570092754, -0.013505876543970436, 0.12582566384208957, -0.0840280956576722, -0.10034574705428417, 0.21028987367517912, -0.05758921228458939, 0.14808233845212124, -0.1494276862199406, 0.015515074946079845, 0.15981333614687732, -0.44844163190452635, -0.21576106481219698, 0.2574727206149297, 0.37915675510110086, -0.07169174320701732, -0.19383285347918833, -0.14222720000830874, 0.2686276537393518, -0.18293549650767138, -0.16961512048474714, 0.009633724619305787, 0.21851274403303259, 0.13312409337606884],
#                           [0.3755078366572995, -0.20161612858498879, 0.22590527596234802, 0.0867452504671401, 0.013850166150773292, -0.21681091111820583, 0.0384516188556211, -0.10986826346319642, 0.04407898310635957, -0.05263268535654733, 0.05030574186504403, 0.023822550637571747, 0.13579980757140755, -0.09089752597225279, -0.014883710422609884, -0.00783958875197413, 0.18090769592980158, -0.07545111855007587, -0.05672588501540177, 0.4051081312093054, 0.08789836277095082, -0.0736520115889272, -0.2252182970327358, 0.1635857856616217, -0.36051966406400604, -0.05309862539264366, 0.03346527066261012, -0.11910223620024862, -0.448521018902321, -0.13632591005447317],
#                           [-0.025110797493557085, -0.28733379317079755, -0.13434839908223567, -0.03572457045497909, 0.1322172750750852, -0.21795248281946067, -0.03940086744230657, 0.024793438341622155, 0.32391621194604914, -0.4395111080750659, -0.02016420836888503, -0.2308378490143518, 0.2205180912573041, -0.22497419475504515, 0.0239884912323955, -0.15280905866121272, 0.0011287165960036211, -0.08657409249422608, 0.08050672599579121, -0.11988786632273904, 0.1419587543238365, 0.2838814329357093, -0.25556836173554304, -0.042281551362847156, 0.011271735359420557, 0.01824747043604259, 0.25134409934105456, -0.02270791486558549, 0.30181572712174365, 0.06278649622909739],
#                           [0.0815837455518731, 0.10775112443770757, -0.3314584065739228, 0.20099897680649959, 0.04363765613024238, 0.09739816376380893, -0.3161684882592524, 0.09067123378413507, 0.08226068819300537, 0.0444647412793935, 0.24250263043499515, -0.07574396541395291, 0.09442225207667716, -0.14516037821599304, 0.15188640305850426, 0.10483638283446395, -0.1970794461725917, 0.019448535803295412, 0.09411734035171354, 0.2868321910732192, 0.3037207491323617, -0.05554637441643755, 0.013649751163702376, -0.2436180982993806, 0.06852955823481943, 0.08331120191434356, -0.02323413916270817, 0.42197164577658186, -0.23211003632725546, 0.2126713386215258],
#                           [-0.08411349716480196, 0.2671738104200829, -0.32942793492683603, -0.22935439089071982, 0.022102650718827326, 0.4116021160804735, -0.041438272573231454, 0.23057935150834066, 0.14100790046220504, -0.11635412696170282, -0.1223182623802988, 0.15192671828995424, 0.0494117079395017, -0.31375226619414054, -0.16242170003691905, -0.12926642975958613, 0.29312047759968773, 0.06509623895781569, -0.1006076157365267, 0.16610591592807022, -0.12756791269583487, 0.13242178052066697, 0.06788380788555118, -0.03480220337328866, -0.27412193609556623, 0.02409964652358143, -0.01391780977515977, -0.24694317827549023, -0.11064527956806586, 0.05959117490215722],
#                           [0.07804624697550466, 0.3842475033746546, 0.05837658938969228, -0.04209996901270768, -0.16476055047659377, -0.2554931971495647, 0.2511831390962274, -0.2067569559471814, -0.061874033881479766, 0.07591049244840525, 0.2744561257246464, 0.24240850402356406, 0.15810527439614874, -0.406159213924635, -0.052019555916896505, -0.021263245792077553, -0.0523481734866822, -0.09057086765340154, 0.3107763986385857, 0.1584450254972078, -0.051654891412967766, 0.030184317955887333, -0.07816291345334235, -0.03511262115683164, 0.09556458922803548, 0.19593754388065976, -0.16686639297545844, -0.0769273143220218, 0.28483342779841636, -0.007094215849415299],
#                           [-0.22478593316709744, -0.10690753323625946, -0.14034481301019194, -0.10766894140971613, -0.07000181268975715, -0.05209842258237794, 0.039134752347044895, -0.03808097030304609, -0.11809915343001645, -0.13532422253864415, -0.2542695029461662, -0.09427426205798985, 0.3026142977152861, -0.07266164938985886, -0.2202473626090201, 0.1253057089844455, -0.18954925252662602, -0.20028344319988667, 0.3256438745811935, 0.09610257663324431, -0.04326174625410054, -0.28343383100775704, 0.19018992705637697, 0.2946258652086023, 0.21652746759735045, -0.18068242850777214, 0.033090098143782956, -0.13829217905437288, -0.2539045292194694, 0.26185486656293894],
#                           [-0.06365124443059178, -0.12075946721838979, 0.03678448248091081, -0.029902582436935995, 0.1378510257617648, 0.27044524288469585, 0.027655093015208545, -0.40475575314803686, -0.0971153979333453, 0.27508335573136006, -0.010475237362260963, -0.11715666011176244, -0.0651778605148483, -0.18199678584566278, -0.40911206402015826, 0.133071143212234, 0.012679223495304051, 0.1260038260375165, 0.17741010018177125, -0.3120296114922535, 0.30753458154358654, 0.12053521161179297, -0.26530282198230454, -0.046099076232067604, -0.20628115953462534, -0.00031984675745712316, -0.08294173897394426, 0.02409072068473203, -0.08264078804184766, 0.13289415927179837],
#                           [-0.09258002020007425, 0.24959117063361386, 0.27461608686658096, 0.004029815199549951, -0.13671282070528148, 0.04244901895828142, -0.008529854215737903, -0.17603562754195543, 0.26619379098571355, -0.1358914415275283, 0.01772992480330396, -0.24075271123044695, 0.06999100337946608, -0.23917148064949065, 0.19747604518219758, -0.059404321029556735, -0.22795601049700706, 0.0008454535553885466, -0.23168778326475864, -0.24381374562821848, -0.1822390964907852, -0.16964726751324385, -0.10706404807877484, -0.3148920617579128, 0.01814552248979811, -0.3038182951305896, -0.17675099554628118, -0.12509130295376725, -0.26427576494710864, 0.05343054637229896],
#                           [0.18442315678624885, 0.036065642439805944, -0.1515866151190366, -0.1868196236156065, -0.2151018293597755, -0.1470663497172954, -0.3892524916386423, -0.019877627554174545, 0.007209294998808069, 0.09663377273367546, -0.2892342065038359, -0.37250304146667473, -0.2629035120026147, -0.01725631438983024, -0.16234791697498255, 0.24157090656377067, -0.07110144164010855, -0.19399427715565953, 0.0634826103416546, 0.14192436053873175, -0.16252711085120092, 0.05468965462113791, -0.1407952587932556, -0.15640731411060593, 0.062021408267310514, 0.19017265007815504, -0.14199057163087, -0.14796318049637583, 0.060261052484320406, -0.27351513921215437],
#                           [-0.32626134390303263, 0.061165891213855725, 0.22603679973647378, 0.1549110585925226, -0.061053932058101106, 0.21289760696624113, -0.19865846008834215, 0.10235370088684803, 0.33580669335073227, -0.14945338682590917, 0.14397656792139552, 0.13906972085266758, 0.13441459194040084, 0.14004187857964312, -0.15628802435917502, 0.10101794957554246, -0.18083245532989659, 0.09022662091878751, 0.22127295163290212, 0.020387632665325006, 0.012700334596552097, 0.14966814660972003, -0.1084752699177321, 0.26690818873297156, 0.05316152267086041, 0.1322473405003913, -0.14066573725697004, 0.02521076152518014, -0.11541944854629883, -0.46733198884685845]])
#     su=0
#     su2=0
#     pro=1
#     z1=[]
#     for i in range(0,30):
#         z1.append(x[i]-offsets[i])
#     z1=numpy.dot(z1,matrix30D)
# 
#     for i in range(0,30):
#         su=su+(1000000**((i)/(29)))*z1[i-1]
#     s=su+bias
#     return s

def F3(x):

    bias = -450.0

    su=0
    su2=0
    pro=1
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i])
    z1=numpy.dot(z1,matrix30D)

    for i in range(0,30):
        su=su+(1000000**((i)/(29)))*z1[i]**2
    s=su+bias
    return s

def F4(x):
    o=max(abs(x));
    return o;

def F5(x):
    dim=len(x);
    o=numpy.sum(100*(x[1:dim]-(x[0:dim-1]**2))**2+(x[0:dim-1]-1)**2);
    return o;

def F6(x):
    bias = 390.0

    offsets = [81.0232, -48.395, 19.2316, -2.5231, 70.4338, 47.1774, -7.8358,
                   -86.6693, 57.8532, -9.9533, 20.7778, 52.5486, 75.9263, 42.8773,
                   -58.272, -16.9728, 78.3845, 75.0427, -16.1513, 70.8569, -79.5795,
                   -26.4837, 56.3699, -88.2249, -64.9996, -53.5022, -54.23, 18.6826,
                   -41.0061, -54.2134, -87.2506, 44.4214, -9.8826, 77.7266, -6.121,
                   -14.643, 62.3198, 4.5274, -53.5234, 30.9847, 60.8613, -86.4648,
                   32.6298, -21.6934, 59.7232, 0.5063, 37.7048, -12.7993, -35.1688,
                   -55.8623, -55.1823, 32.8001, -35.5024, 7.5012, -62.8428, 35.6217,
                   -21.8928, 64.802, 63.6579, 16.8413, -0.6205, 71.9584, 57.8932,
                   26.0838, 57.2353, 28.8409, -28.4452, -37.8493, -28.5851, 6.1342,
                   40.8803, -34.3277, 60.9292, 12.253, -23.3255, 36.4931, 8.3828,
                   -9.9215, 35.0221, 21.8358, 53.0677, 82.2318, 4.0662, 68.4255,
                   -58.8678, 86.3544, -41.1394, -44.5807, 67.6335, 42.715, -65.4266,
                   -87.8837, 70.9016, -54.1551, -36.2298, 29.0596, -38.8064,
                   -5.5396, -78.3393, 87.9002]
    s=0
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i]+1)
    for i in range(0,29):
        s=s+100*(z1[i]**2-z1[i+1])**2 + (z1[i]-1)**2

    return s+bias

def F7(x):
    bias = -180.0

    offsets = [-276.2684, -11.911, -578.7884, -287.6486, -84.3858, -228.6753,
               -458.1516, -202.2145, -105.8642, -96.4898, -395.7468, -572.9498,
               -270.3641, -566.8543, -152.4204, -588.3819, -282.8892, -488.8865,
               -346.9817, -453.0447, -506.5857, -475.9987, -362.0492, -233.2367,
               -491.9864, -544.0898, -73.4456, -526.9011, -502.2561, -537.2353,
               -263.1487, -205.926, -465.8232, -9.7565, -16.914, -452.9397,
               -430.6107, -162.3137, -69.0204, -302.4082, -527.8932, -489.4274,
               -74.2562, -6.8285, -546.3631, -415.188, -322.1499, -145.3822,
               -527.0019, -422.1779, -254.2542, -495.7289, -286.1023, -196.1644,
               -104.9383, -388.449, -57.9322, -53.9958, -114.3882, -50.9434,
               -508.0961, -77.0278, -242.9642, -11.5865, -506.949, -222.1662,
               -303.8325, -359.4041, -156.0715, -252.9711, -345.7062, -133.0654,
               -30.1874, -306.6162, -160.6673, -210.5113, -186.2518, -550.3127,
               -519.0305, -320.776, -471.1067, -159.1724, -44.0751, -84.1251,
               -538.0389, -444.1993, -590.9338, -216.8007, -523.2731, -317.2,
               -393.6671, -548.4339, -416.0403, -380.3826, -109.542, -167.761,
               -345.5127, -544.8631, -357.8218, -598.2117]
    matrix30D = numpy.array([[0.5251956125907735, 0.6296248117148668, -0.08160606132683026, 0.03576049930628756, -0.1553809151095137, 0.26008955030180714, -0.3817517462497128, 0.21907209306890707, 0.5049366645678821, 0.09395282774631639, -0.5679868982066928, 0.002631118205619362, 0.10712583383256184, -0.5641080362479242, -0.02086877363977522, -0.21376215799535148, 1.085753263316051, -0.08680871270488333, -0.39111385376560204, -0.18250247739704042, 0.06336234409970146, 0.026592938973198463, 0.2863405301962532, 0.19237895948477204, 0.048978143151076375, 0.6093511482033286, -0.22905064518848176, 0.2892090775588169, 0.1315788265531045, 0.03621036120804725],
                          [0.027197296268476768, 0.3236770289166518, 0.2673564112582096, 0.04490858064014018, -0.0880245095974015, 0.49123258896754796, -0.47376233220537367, 0.4872276971467088, 0.14197769748752107, 0.13910203365026141, 0.3526886776484709, -0.46586058664048363, -0.05666207653031261, -0.5720999577327093, 0.6026729252785665, 0.4064302843438666, 0.05328432741089904, 0.025918104459188657, 0.0582263897014344, -0.014864624187302571, -0.46895664227060835, -0.04079452826979109, -0.11341181189342649, -0.14813997915679597, -0.7283915422256599, -0.3586587295924857, 0.32472054085304086, 0.10670492326843771, 0.31823580636284665, 0.011459610657431932],
                          [-0.14283926063879585, -0.40697507884813094, -0.06296791964078344, 0.2855067197834561, 0.31648661178877774, 0.311487663126304, -0.27654956860625796, -1.2237448785371914, 0.2546045133306948, -0.13999525690124606, 0.05380306150937515, 0.37893910566199, -0.2399949100281412, -0.5462967745846887, 0.017506325549621105, -0.05243914629521984, -0.25287880152376124, 0.32110768760177216, -0.15055115975099517, -0.02675417714829102, 0.0961702569022476, 0.280470642988422, 0.28478479816634583, -0.1543526405465699, -0.7505105486761497, 0.8889779657967395, 0.18846345208432838, 0.0317734278667209, -0.3152303688792176, 0.391634897912328],
                          [-0.19230305653243795, 0.14412829188588933, 0.07619417177065936, -0.1735258103004624, -0.3728410683405971, -0.053093367817076687, -0.1397705027851209, 0.05641305057750666, -0.11263300539607736, -1.371097087246573, 0.7914080842341531, 0.14224298162107657, 0.28660234332283036, -0.6364182269034965, -0.17168309990813768, 0.521765472124468, -0.22936753909544647, 0.36141846228003754, 0.0627538701542238, -0.46508534830244314, 0.013055775943231198, -0.6446459739259691, 0.29729051219327046, -0.21303821930909408, 0.14106349740288346, -0.3228430275958782, -0.013172326455183443, 0.17639421427199017, -0.020193518969203666, -0.23697642187071966],
                          [0.017941156920697556, -0.0032613324153474795, -0.09394169873306508, 0.11138582919894903, 0.22267275228606281, -0.22487764497325685, -1.4220234187488923, -0.15779176485867222, -0.5935258145256564, 0.6750086913684697, 0.09045301187679394, 0.29018722319490176, -0.03162887306957824, -0.03336932732541356, 0.3866895113369479, 0.40423892540887746, 0.516351910191089, 0.18744417647614436, -0.9211491723069192, -0.0937791913117578, -0.12190006994453413, 0.27895027675192247, -0.19191409061439396, 0.1874423066223706, -0.11894635990235042, -0.22361731431964088, -0.4767800989241227, -0.4877780386976937, -0.6446228290582775, -0.17834097178379926],
                          [0.5241809392674807, 0.030104693742323985, -0.4487326935770162, 0.04052747876674157, -0.2269121128941838, 0.2063553399950617, 0.3375736925571363, -0.3136295062851913, -0.2381786368368246, -0.26992406601823105, 0.024883493432015787, -0.1820422531185993, -0.14787231062767067, -0.14467488789128286, 0.7379856995277947, -0.3228021904941481, -0.07131674250992479, 0.5760285021060951, -0.4461450842771441, 0.29144817483112656, 0.27372504229943323, -0.3912637911086641, -0.10936764493327546, 0.23627053879857174, -0.0047688691507444415, -0.14908304885126428, -0.13942634074538363, -0.40742945170888095, -0.04016305926434399, 0.2770992063121178],
                          [-0.1796315543498434, -0.3088259643977865, 0.16679046990687899, 0.676797215229488, -0.018504702022676345, 0.3568901053467492, -0.301103213619431, -0.11203540763789063, 0.46762898807555625, 0.3583278615749358, 0.24746066931208252, 0.26161381404301665, 0.4196098501352797, -0.8054289580967843, 0.340098493985431, -0.3538830052249477, 0.09850168325751024, -0.12856460639098805, -0.238443988061706, 0.06674413315483059, 0.0024370893511487437, -0.014624272930326206, -0.48064300877141364, 0.3281587261778145, 0.6740142384725395, -0.22289988626631865, 0.788199459862219, -0.3592567513698649, 0.3050968654002365, 0.25165714367765074],
                          [0.09017013784265451, -0.8073109999262168, -0.4365423396918477, 0.5984269321316447, -0.3586460110002811, -0.24710040484269682, 0.27569166091336883, 0.25760155278258223, 0.042680494023697044, -0.2629769458735662, 0.11471795844732986, -0.10392750185280501, 0.20677423941458503, -0.07210854161974037, 0.132044115878351, -0.4591713295737204, 0.14669987662114944, 0.03764141140554433, -0.3751300930960975, 0.4771299522479577, -0.09275930437942279, 0.06292591063541508, 0.3774518737867685, -1.0524395533410724, -0.048504602512376184, 0.7971027738260442, -0.7710853944447905, 0.11665560980862894, 0.07665521220783406, 0.03415172583637216],
                          [0.08481666108717764, 0.46235575219599717, -0.2554204500148909, 0.2968492070400785, 0.6062353968056093, -0.06288103304333757, -0.3498241731087342, 1.310754720345192, 0.4404081678951473, -0.22553199823789682, -0.012023184035191885, -0.10277496886755634, 0.7073512297543338, 0.517995489698905, -0.47671762987877364, -0.5953885908893226, 0.2647045600959649, 0.15084743008189475, 0.2259857512634269, 0.01866193905803066, -0.013051438350340533, -0.00364924285578231, 0.1484433903970785, -0.15948137169610951, -0.029584625828204394, -0.01740202444250005, 0.7359850272711348, 0.050960442077867665, -0.3396572199706991, 0.08024814215779577],
                          [-0.08703123128238717, -0.10182327665839208, 0.05466654682530931, -0.33065207081640063, -0.05491894040507877, -0.20479308033662338, 0.055533135117925, -0.02454725881948226, 0.12836466398224441, 0.01586373962728287, 0.13852561709358163, 0.22125720882632596, -0.5320446490831986, -0.2706316408254332, -0.08329046992078805, -0.356926025588531, 0.09244654815357126, 0.030424519200944772, 0.12246842590966991, 0.32439545553902455, 0.0824425275067621, -0.7170473436454663, -0.6163496360524862, -0.6074038300236714, 0.15683576642407607, 0.004147799561720685, -0.036427157973224746, 0.9397390072144407, -0.10206438193992133, 0.12421845076027337],
                          [-0.19963377842023827, 0.09759470942597367, -0.7253774879313741, 0.2237484821228248, 0.05746747772940647, 0.3839780343624228, 0.6927019583379127, -0.45083891971688544, -0.29816461409904826, 0.20598181571831803, -0.6519368752866852, -0.0215909662301006, 0.2871145104402745, -0.22178249626481297, 0.3757960766047793, 0.13292198860936325, 0.43053757946168203, -0.7366880956589341, 0.5508167821362803, -0.1822455639728697, 0.5651905394544006, -0.008219891690000482, -0.2045578193547179, -0.7389761191619963, -0.22786647844105837, -0.6992413851789548, -0.5419644068892996, -0.5032195101873232, -0.03553834259751016, -0.1055147411172392],
                          [-0.20893926557003645, 0.3163613681239083, -0.09946609727345554, -0.2421841400286103, 0.3536296128089201, 0.00013058167800751792, -0.21240729902817237, 0.20667632229657842, -0.01733790919429791, 0.019089642335327804, -0.03690553184108504, -0.42743589890699607, -0.5665140481648028, 0.4701636432644331, 0.03265240315687935, 0.5196675684858377, 0.7619684355576732, 1.061948414608741, 0.3582700099700933, -0.1517202249461459, 0.9405493836112241, -0.1220093285575887, 0.8068319465947688, -0.34984163644832483, 0.15674611272462183, 0.22757829405084617, -0.2646025116539486, 0.30937502450864124, 0.4011328835535284, 0.48569499692733825],
                          [0.04882908154654262, 0.07617315349068944, -0.14761081845068474, 0.4438901544071871, 0.42244517870184206, 0.0725102736139313, 0.014684225471323432, 0.7686363193400053, 0.033390537951981804, -1.0510738883424307, -0.36363312671337084, 0.6658594300598614, -0.8423657315506895, -0.09764248838073249, 0.04854737303310692, 0.3583514670106889, -0.5959573031193156, 0.25625748610364163, -0.3294838306312295, -0.018967240790369676, -0.34256961159765487, 0.39400672042039264, 0.14341508539865483, -0.7481023787309903, 0.5652753260336568, -0.15227199107324685, 0.12292735377135154, -0.3610813730577095, -0.4743226182630074, -0.009737474140454045],
                          [-0.05335775509247778, 0.008827148671438675, 0.21030427826190828, -0.4777249708539189, -0.5352961266500237, 0.06727573686421368, 0.20177662334784804, 1.075247668850319, 0.3384522149121312, -0.39927766332883585, -0.5957970154833612, -0.14535988587691653, 0.41369825233198726, 0.08257940382783094, 0.42731944332457267, 0.30184617077225445, -0.10166539987082789, 0.6584574181898547, -0.18299140513336967, 0.05363158760405134, 0.5524878837980216, -0.08495859196848445, 0.29577858255352657, -0.02830078261197758, -0.15482186962457775, 0.6609440762704086, 0.08713346977742532, 0.14196405262271278, -0.5104835365628128, -1.0556064992354912],
                          [0.055474357068774696, -0.2175593879293049, 0.491313018636015, -0.20858129798407596, 0.19030794698042097, -0.27265814228570556, -0.0899259059016074, 0.008254514421487934, 0.22817487587074314, -0.5321020598762006, 0.07256933829688463, 0.24912444351799437, -0.1130286362066933, 0.2668234613908604, -0.1693900667484152, 0.05272898742725138, -0.10999418523245638, 0.1817616992423075, -0.3533820645739874, 0.08782930473168324, 0.30277587147671964, 0.5140482296347775, -0.31511395034124356, -0.17003306715357008, -0.33984380475288284, -0.0418572205753124, -0.0840286337896464, -1.149052347563724, 0.3652433940148505, -0.5172605807355659],
                          [0.19089315156505332, -0.3515748393505331, 0.23433987108224003, -0.055036159031292074, 0.11228386172919293, 0.17928383935856776, -0.3110614614692487, -0.7745118811943349, 0.18393786738635443, 0.10942716885446327, -0.2515559356546049, -0.23792434311914115, 0.038173157847961776, 0.23411381660414032, 0.13773552925947255, 0.08258914601449341, -0.15237297029250385, 0.42640468897547906, 0.4822724586449902, 0.11404166941428694, -0.5452648474860727, 0.2929168028156773, 0.44637835262499403, 0.30185539052419164, 0.02729973957172667, -0.6005543170715507, -0.9084720332930788, 0.41684134740964707, -0.2889616893789568, 0.18472780389261786],
                          [-0.443659317804456, 0.20161997706402612, 0.810352086315364, 0.13999675637604053, -0.09076733299918537, -0.024145092836682057, -0.4262901090412367, -0.18124238397636042, -0.0010927829116524064, -0.5766929622365579, -0.3962120376311297, -0.022553539088515966, -0.09532489557636975, 0.2268995045765963, 0.03580828794179378, -0.5057916203447834, 0.0002901929300335606, 0.14693801984442958, 0.11252773442183153, 0.4400567697598135, -0.8692838858950027, -0.043109398038224486, -0.09579911611195302, -1.0836855674880084, -0.09085837605787367, -0.24696263697799142, 0.07044504026949695, -0.4393350174497034, 0.027517518972710996, -0.46099955282192784],
                          [0.03901669712899452, 0.5681818582732804, 0.18618175597017259, 0.4794360604177564, 0.03308728334416186, 0.11737822896360332, 0.04700328967037003, 0.2819817441611866, -0.6083504385589359, 0.4457684776834928, -0.050984788598342545, 0.21432351006331557, -0.10784378269401643, -0.005804743619719485, -0.7949634901905451, 0.04290120798746404, 0.04413551712078642, 0.7157251571814833, 0.1416111418079355, 0.33573863068689414, 0.0893792908417187, -0.35581894390084906, -0.12566700503283249, -0.18513340945886422, -0.19652048268055347, -0.23880366715697232, -0.21086550609957921, 0.567269403650762, -0.026717566551968223, -0.3124184080762039],
                          [0.2678154138097963, -0.34112256052479367, 0.2325212427265422, 0.15844493977223365, -0.6443344964268435, 0.034948104428968764, 0.3168584315577158, 0.6361513756681318, -0.43118155782809375, 0.5058144552370181, -0.023805332218941794, 0.5722788658584614, -0.33677525969988037, -0.011958602405631676, 0.6979946172534979, 0.09424292604166938, 0.3741556204762604, 0.0812971020594356, 0.36809524768471985, -0.37822814889765527, -0.14180993618470203, -0.03467363752483, 0.2976276016491256, -0.053317672022776715, -0.23399180423087013, -0.17830847107435255, -0.037431131385841115, -0.16556211424110664, 0.21672322583982717, 0.3817377909156938],
                          [-0.5801147369884342, 0.2587088293197146, 0.08273373836020612, 0.2516432670212754, -0.10879187325032068, -0.450765922923288, 0.3453985928644022, 0.043012684211313705, -0.23408200093718884, -0.0802515173766273, -0.6558286684326794, 0.007670310376122003, 0.8386006392285189, -0.25376100378943967, 0.15527457737903413, 0.22158367738035356, 0.229869231994624, -0.09714392332911286, 0.049006457836016114, 0.18696642019098078, -0.6072646931787915, -0.28567358369746837, -0.5088812410185157, 0.1718087163437044, -0.46119218791441374, 0.1765770903968061, -0.5882232330623944, -0.23286550667880862, -0.3394578527958249, 0.5727874398475595],
                          [-0.22540793402711115, -0.06755359977714916, 0.33876832577160637, 0.6791509184377688, 0.2775346640119923, -0.1696747935394242, 0.2544620165300436, -0.2508865810497295, -0.017941377104392423, -1.2393201589385745, -0.4617760773527162, -0.2840540221038478, -0.25423169925847056, -0.09099793397662476, 0.7746308130496928, -0.013204070466857364, 0.24102227106093604, -0.7495484468179708, 0.17833236495344146, -0.020287503377335096, 0.4920794792333479, 0.02224793023825241, 0.007621685097736311, 0.5442641972624087, -0.17563066341779757, -0.584042195481135, -0.05791419779062022, 0.18969436631833472, 0.06900938138803524, -0.1608672071777576],
                          [0.24454616550640165, -0.3603871977814697, -0.3347519327476256, -0.048546056667370927, 0.21962829161232106, -0.08302076189815602, -0.46659496465189526, 0.38964634647453283, -0.4825698368684642, -0.4017965422323238, -0.4957713116877271, -0.02801738359802306, -0.2252444744073479, -0.11298989621975267, -0.2828587802788923, -0.39415652829519715, -0.4786892371592048, 0.18227794740612688, 0.22418836468775957, -0.369586641044146, 0.07692342239686746, 0.503629925428362, -0.9086942265148878, -0.1668864973563786, -0.0636358736862869, 0.365179951842247, -0.7587599483128067, 0.30145209924222166, 0.5055587724640189, -0.1939932620531713],
                          [-0.7793575853267664, 0.15860956365391224, -0.5055383818572619, 0.2413527235561757, -0.10941797990557137, 0.617687649159074, -0.15908559350750945, 0.027986467033818678, -0.17237273393170366, -0.09657659488631037, 0.5718379054279766, 0.17145589966877633, -0.3333234071494628, 0.06662918915242626, 0.05730679503895292, 0.214524624101122, -0.280107409653574, -0.2419132307760144, 0.3754431057649062, -0.11162878866297524, -0.2956444793778426, 0.11499169541906058, 0.03411001256969341, 0.21288727749536326, -0.2604206337828247, 0.3174429890874937, -0.6020402286019954, 0.1380972699793407, -0.20708907898121062, -0.22319403115599873],
                          [0.013544895722588504, 0.38990467589143474, -0.09922837603565184, -0.08460693650167266, -0.7253303157375289, 0.2509908514915258, -0.2321162244872553, -0.2885289278431979, -0.43731065979480066, -0.50169445880165, 0.15400604862456319, 0.1335122369063184, 0.4101173817185761, -0.04768197794918107, -0.3707672276134215, 0.10051823135374476, 0.207850018281615, -0.23209860178099315, 0.02182364955165532, 1.103226543145372, 0.38907323874142796, 0.2300062065235771, -0.39568074870871445, -0.035327255347893875, -0.13016040982050547, 0.02265190739421924, 0.15965751762220737, 0.5077492837970494, 0.1605329720700767, 0.2324611053813426],
                          [0.3332634666187155, 0.10850832158239503, 0.033109729840135646, 0.4766110201439036, 0.17367758763344615, -1.1594173563425136, -0.08617781256170608, -0.3572096185876832, 0.5398765358227895, 0.2395033052034622, -0.14227289711360322, 0.09541418671673987, 0.2219249480952825, -0.01729510776220258, 0.7594007249168333, 0.22018323608165088, 0.29781876974398264, 0.07687181491615469, 0.6127790354872965, 0.27989038789886195, -0.16625488269305133, 0.4111816498252515, 0.21609348696113853, 0.23317676941428825, 0.40244045407168405, 0.3706134828646342, -0.14051205940218423, 0.2072009066932428, 0.1589753231665995, -0.21484113318248707],
                          [0.08034989150019184, 0.3650717615600979, -0.23016886275056048, 0.31623497884122836, -1.1875160076152353, -0.9131206765501281, 0.3518992820112484, -0.048899431950184626, 0.22277174429508992, 0.06063956292328349, -0.2439465042883474, -0.12827771886081601, 0.10168334728227843, 0.04612259921139138, -0.5495672987703597, -0.057541844653563025, 0.24522085984280917, 0.4541572527005129, -0.3516806666282396, -0.00010796984274126797, 0.651375904544969, 0.589916441439836, -0.06672246577358562, -0.18224949082926373, 0.12897605496341666, -0.3838531130539134, -0.13499424049674427, -0.07936105990645868, -0.8848799250849371, 0.5233267562621462],
                          [-0.35724817146191507, 0.40695286082904986, -0.3204541115341793, -0.2766956107522639, -0.24204270975494563, -0.7649465200981684, -0.050034052953182036, 0.2470871839939605, -0.028640593839252486, 0.1984592493281509, 0.08354570799198618, 0.13445055377377782, 0.0729484731480335, -0.39318407362561464, 0.22815167109001178, -0.3623496741357807, -0.562722394118617, -0.17767738544618106, -0.34060539319279787, 0.3794645286617106, 0.46281014029219136, 0.09639711119533802, 0.5294717088372223, 0.2594933741076368, -0.03908377537790259, -0.24919808723230227, -0.43544162318520363, 0.21720689370639346, 0.29156816248001793, 0.278415197982219],
                          [0.23800147045098194, -0.23800978666381364, 0.4836215425000708, 0.007081465145223219, 0.2315396888962164, -0.20798543870793243, -1.255522560781906, 0.338567368180303, 0.022975744746418024, 0.23884978465158732, 0.16228958069295288, -0.7870323586904364, -0.2705350533376601, -0.2590803004251703, -0.4615189592917698, 0.1562991672090882, 0.05964969907678848, -0.0024157167244675377, 0.2675238349410481, 0.3423763502853791, 0.32858683338745404, -0.5754947794282538, 0.5852589976775637, 0.08213968788037487, 0.249009470866771, 0.24300044494268533, 0.26289797069890863, -0.39645477447068467, -0.41291979677661855, 0.28439373819468894],
                          [-0.10845807355856903, -0.0795765853171458, 0.4496908727322971, -0.6892826976093493, 0.2584474740863176, 0.3671446035178645, 0.2511874276544932, 0.14216128987646925, -0.14789133480526645, -0.2297615159007828, 0.31476217644132587, -0.21687803131052097, -0.06472015875408321, -0.16262540403474884, 0.30468341208199023, -0.6979495385209046, 0.07722720472422526, 0.46592056813958793, -0.141067475385309, -0.10744787372995435, -0.051380310356971, 0.5493708461973117, 0.024672344704677288, -0.23164502167731096, 0.08449024456735708, -0.12426487299083105, 0.2146558082648994, -0.35652633111324666, 0.000300786526311591, -0.4349791745712771],
                          [0.02598111150273699, 0.3139990289974612, 0.9647048740679679, -0.2877943927102681, -0.3155208258945394, -0.11263330906743362, -0.14041001139620138, -0.22897479410224464, -0.5196786607506801, 0.16135823650573577, 0.2518553018859645, -0.17335088497743176, 0.1440182772131403, 0.02560028913101942, 0.5560824759988701, 0.007991501858669755, -0.4610280064229542, -0.24902158398041724, -0.05700926791737188, -0.035233910206498645, 0.09726571052612544, -0.2616110145562515, -0.14908422355415274, -0.23905281038540271, -0.29305586801624206, 0.46858863763195496, -0.23308970639748922, 0.10269595907675749, 0.044926224514281465, 0.5411420486006493]])

    su=0
    pro=1
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i])

    z1=numpy.dot(z1,matrix30D)

    for i in range(0,30):
        su=su+(z1[i]**2)/4000

    for i in range(0,30):
        pro=pro*(numpy.cos(z1[i]/numpy.sqrt(i+1)))

    s=su-pro+1+bias
    return s


def F8(x):
    bias = -140.0

    offsets = [-16.823, 14.9769, 6.169, 9.5566, 19.5417, -17.19, -18.8248,
               0.8511, -15.1162, 10.7934, 7.4091, 8.6171, -16.5641, -6.68,
               14.5433, 7.0454, -18.6215, 14.5561, -11.5942, -19.1531, -4.7372,
               0.9259, 13.2412, -5.2947, 1.8416, 4.5618, -18.8905, 9.8008,
               -15.4265, 1.2722, -0.4592, -8.2939, -5.9257, 15.6065, 2.0942,
               -13.7829, -13.0051, 15.1424, -14.6214, 8.6143, 18.0522, 17.5778,
               -7.681, -4.5826, 2.0896, 4.7818, 9.4115, 10.168, -2.8787,
               -0.4077, 3.0359, 14.4928, 8.2224, 1.8095, 3.6144, -3.4366,
               -10.7086, -3.1311, -9.4393, -5.0748, 17.5458, 17.4368, 5.4145,
               7.5412, -15.6611, 17.6698, -16.519, 11.1525, -12.1781, 17.7685,
               10.6649, 8.7514, -19.7875, 1.3069, 9.7793, -11.6669, 0.2654,
               7.9918, -4.955, 3.5881, -7.7524, -16.2979, 9.0324, -0.6257,
               8.8854, -2.7198, 9.4307, 9.08, -0.658, -11.0244, 19.8484,
               -0.1346, 17.8195, 11.7214, -10.2953, -0.778, 12.8435, -8.9002,
               17.6856, 6.1183]
    matrix30D = numpy.array([[2.511190264603399, 8.257741094092125, -4.576972024334265, 11.663051871013478, 1.8392711991609043, -3.930477981638431, 6.381869129516557, 5.554163663846647, 3.792259995720394, -8.119579509114208, -6.749873116676933, -4.16744839268803, -5.247229107097693, 4.380091021522936, 1.6362652066486465, 1.5457444553413353, 6.729651169519672, -10.841704025647012, 5.27133366266056, -7.315142457952093, 5.586455189183544, 0.13436020980535218, -4.757951297029205, -7.494064226166734, -5.71422876353246, -3.4949745886606784, 16.86892010541546, -6.058600435639238, -11.353403083342686, -1.0923576208896637],
                          [-1.1762520815425976, 0.19467231905937696, 9.262321627779777, -4.877620455960017, -3.0138253051512947, 4.138941347418219, -4.381399078195643, -1.095599959738453, 3.3625539508337665, -2.415178728944297, -6.861613142354518, -0.005940467288075457, 2.135933445957106, -0.30727574965743903, 9.502954614655595, 3.789220991977143, -2.7696427577007503, 2.672716708411572, -3.374116812054481, -2.0411067751984415, -3.340247070143979, -0.8374990943521036, -5.259049047845686, -1.5214938770854254, 3.5602450658168063, 0.5878490497775958, -8.24965720380312, 1.5778811846183591, 2.56392435402041, 1.537958604481863],
                          [-1.3085812283158484, -2.0503713510983976, -3.8749598247741446, -2.1360189905937013, 0.4253742810704534, 3.043654044666869, 2.8524638400066973, -4.609692730685587, -2.6769899949340137, 0.018654380314467155, 4.1843245155883, -2.9414549211011054, -9.0702547942116, -2.890167502434176, -6.5170875304560765, -6.458220473167814, 5.2147578439709585, -5.6728283981570335, -1.2918267757780038, -0.4252377582507283, 2.004256913177237, 7.010207042020759, 3.2458529989643554, 0.9758521951937688, 1.4063626039048713, -2.052462316198574, 2.872078581244381, 2.445851054572349, 1.108924529459803, -0.2606291991295358],
                          [-0.6913013228225544, -1.9945323148620686, -8.604754485993125, -2.9761072632153596, -2.5462817170506593, 0.1308927281969895, -2.0952635102573707, 3.3569684373927915, 0.2599788677493233, 5.401823223841656, 3.0612958034992652, 1.403978462555566, 3.459625904755164, 0.8751447813065708, -4.037867043038509, 2.6981413548750095, -1.0464805632232836, -0.1621208184980227, 3.972120681919849, -0.36009588611547283, -3.5904310229755434, 1.1357447862030143, 6.085551336331358, -0.3065977505986462, -2.3495830369958446, 3.903939972739528, -1.4818186582438302, -2.878395159465752, 7.258503538363769, 4.796644771310021],
                          [-0.44423208195583835, -3.5713856787861915, 13.286045625307453, -12.839633153682575, -4.489679872696604, 7.869013641543565, -1.965105477391064, -8.636636350365924, -0.09482264984524189, -10.673493697992319, -12.53156986402604, -1.8549791851385953, -4.845831775303889, -3.3031932998435436, 14.504105531464209, 2.5900447684339514, -6.135686158996087, -4.270904315841696, -6.861683086853831, -2.744870140116196, -5.102676391316569, 5.943125003510186, -8.766966677691988, 2.000662359536807, 0.48220557102433964, 7.450887387478847, -10.45013256174983, 3.625933262996068, 4.179177543735097, 3.9824767971390695],
                          [-10.464299208072154, -0.18582026098543591, 6.5520413966727755, -5.911945191669922, 8.168937620030086, -10.982208830632558, -3.00135846456146, 2.9120659976777534, 2.671937505436929, -3.2565588882474192, -1.0109819456145726, -8.18916926806801, -12.001606012082647, 0.5651405467043745, -6.816130902986662, 7.034212706943163, 12.40601107576485, -14.537675875626526, 1.4015463474018615, 0.07076147778121572, 5.173018588042309, 17.500331178638167, 3.0976732548896924, -4.026635320023784, 3.0078191708339106, -6.986787465181084, 6.3941959158811414, 3.687826212758699, -10.500866576776128, -13.151879796730649],
                          [-5.781123825040053, -4.695427919915561, 9.384139425829048, -7.575211154097536, 8.514278328525183, -5.720630545110835, -3.828493595935516, 5.90998861394398, 0.14890776917348506, -0.6311855790951664, -7.572076478194538, -3.770557393047349, -8.178577514209056, -5.098256869553833, -12.07105725371895, 1.2487379324442383, 0.47854419252377683, -8.678825875969533, -0.9462098586300893, -0.7897275684569901, -8.64978321329506, 2.485419664365408, 12.153488342644684, -3.0622423287838485, -0.17037027582981643, -2.0935247896287046, -5.15404262324049, 4.5082775046079915, 1.6106478189308102, -3.274879887486953],
                          [2.268818310206689, 7.300452401745146, -4.331575628327129, 10.74428874720899, 0.1504927377755603, -0.5227038319103562, 6.686183057924437, 3.7822199735751276, 2.188704155720839, -8.966284106856413, 7.937092834912006, -1.3156741545363397, -3.3952200221430955, 1.5598471755009025, 2.7888347922477204, -2.138994752636062, 8.323858134206022, 1.1033496914596266, 2.0809958580689525, 3.6719079154589567, 10.73018786831511, -0.7865749211442614, -12.077147983799486, -3.2004833008354185, 1.9646808590108427, -2.6570004171458312, 12.549412268552729, -5.048053145262655, -8.92560318109584, -3.2910786331928614],
                          [0.04105519419198197, 4.198164286592344, 0.380892004577647, -8.23942251831774, 4.779957612796264, -3.4787851409838986, -4.340229693544734, -1.2696168576985805, 6.146810236016467, -3.0718648059925666, 0.9713379129568289, -5.896120164000506, -0.7575508318583819, 0.8782009342897784, -1.5325189430622428, 5.844371522790389, -0.837014728066397, -3.9072787371408775, -2.030173016623314, 3.202676786182734, 1.470137096717735, 6.858775309836105, -5.7516870726842155, 2.2611091220924573, 5.446233047509159, -0.9945752140316289, -4.198066474981203, -0.9162837190624441, -4.341766414322003, 0.6600030953405235],
                          [-4.758805234887069, -1.249096368305273, 5.230241683696193, -19.44236789411332, 3.990165558570265, -5.21678532927235, -4.960118855176376, 2.1136647271764106, 0.36524674000405544, 3.6709416597019735, -1.9142880398717106, -6.094333718753953, -2.6829676276599868, 1.227422326532798, -9.433645672535167, 4.9664378753052905, -3.616907241245708, -0.14555234532874778, -2.2803947884135107, 2.265409089297554, -5.317818474692691, 4.356958717932082, 9.75139488271248, 2.1844180242408706, 4.551729219908339, -3.2039375193038246, -8.161877539527412, 9.881964507838315, -0.9426793939999769, -4.0907597726080605],
                          [5.895714456877837, 5.673958378336709, -7.551189095277389, 8.6763663921392, -8.74212847286295, 7.876941413449155, 6.186314942878492, -1.3852922593783206, 2.3393505014942435, -7.303402814099851, -0.6203459067214555, -3.2148004432772503, -0.5285586783061472, -0.32765172515905244, 6.60017678920534, -4.030480514390237, -2.74819741682516, 1.1317199597948133, 4.041615304275, -3.807276819902737, 7.174795405973731, -7.105910692661075, -16.16824790535485, -8.490742807482299, -1.205275569694925, -3.2137834518973687, 10.19460083362542, -8.1537702193513, -3.34614228867147, 6.852576635102674],
                          [5.050755100515472, -1.0150841665383323, -4.488951762662663, 3.0719093620471365, -6.3092147908051945, 4.607171586689359, 0.5187719859312746, 2.5762076049942544, -2.5389515408876373, 3.8711704280020434, 0.86099787829018, 9.333192517131101, 3.898241746958841, 2.045637143082407, -4.632172666627585, -3.251052343878506, -10.340844584872428, 9.938362935470167, 2.681875064667896, -0.3092887196066297, -3.553804690623363, -11.909220170048043, 3.407795649838816, -0.8522349929092184, 1.4705436942360726, 0.018651383236501812, -0.4009399370789993, 1.0066041993408876, 5.546567833598792, 8.936287451220219],
                          [-2.296736642073308, -7.507685960269931, 3.878804185286892, 1.927870783876082, 8.606052457582582, -4.902250427177561, -0.36941525186262203, 3.7711058984310473, -4.497236148553519, 6.92064424996612, 6.555606653106257, 3.979481264635631, 0.5516700172892737, -1.2503803722341893, -11.577926205347564, 0.9894936246678699, 4.643449205576342, 0.039903009834914564, 2.717889467266028, 2.628829050189848, -1.391097858187011, 2.040534828877561, 14.571897255676616, 1.6457997025263595, -0.6011288484691789, -0.8404047965826955, -1.4631979926819447, 3.202376802222665, -1.6711768384467316, -3.3759766251534],
                          [-3.9375156766066337, -3.139929919295693, 7.0632092358776095, 1.8092484750688675, 8.870247836692679, -7.116279757514643, -0.5615698009579931, 1.6076237660478159, -0.4429803377018967, -5.392629763518957, 3.2533129344769782, -0.5391049139516102, -7.500926900397016, 0.9805730851429574, -5.634247758036995, 2.236908157606175, 3.147822704551946, -5.9377624757314145, 0.8872390596601577, 3.778662703078195, 4.579851636624116, 9.68224407023739, 0.005007990083924427, -2.0666085879540494, -2.8401007471138193, 1.0726704708603498, 6.107120400203828, -2.014818439278602, -7.165823950693442, -9.272074819149603],
                          [-2.680240010855875, 0.35600434995900165, -0.4144569076217877, -0.06776461827814266, 5.320643303727243, 0.7378754378835478, 1.2136684358984866, -3.145814327985767, -2.507697183673514, 2.536104038824088, 3.558431317438912, 2.1311591533309513, 3.764201252276733, 0.8162043973711717, -4.632956423959657, 0.18412028912752174, 1.2174333740701588, -4.036068485529014, 2.258556949877698, -0.9100825423666752, 3.7541872563123806, 7.457650756177197, 1.4568472563765222, -1.6086122502502214, -0.7576487719636653, 3.790322347324032, 0.8870400990512606, -6.027791111032598, -0.32819170272693354, 0.8660027666095153],
                          [6.578208237675698, 0.8184102932913206, -9.288863917296439, 22.14413550757907, -5.223269252930489, 1.8041411263480054, 6.924767448007314, -2.7767801206174636, -2.4943841856277307, 4.743636200841757, 2.6908221523406097, 6.088855334101281, 0.9810394501311365, -0.12367295029956667, -0.1401318287401328, -13.797914058713273, -1.914030716314594, 1.3560533260143395, 2.4858409618477904, -2.669304324669153, 2.2893697932797594, -12.59957022859263, 0.93847348962723, -3.000750651813473, -6.748464919761018, -2.9989918132723914, 7.50927404965129, -4.712789813740673, 2.5839742623096855, 4.259407321635679],
                          [-4.302432019312597, 1.0302191609738225, -0.03540140103404428, -3.8646036591002857, 11.181713062447539, 1.7991288421541245, -4.632382202673897, -2.780991517575134, -2.5313169687422117, 10.165545659183975, 1.550622641761506, 5.402782921171298, 7.0667343369424325, 3.5594650532243692, -7.838510786198628, 0.8727945279310535, -6.729399256798964, 1.851943659950421, -3.1730230733872498, 0.30347745630898443, -7.294328632117977, 0.4312433576422381, 12.108553118909567, 2.7855123137319424, 3.951422589853138, 5.216571541524427, -14.01807799640241, 3.6806182504814076, 10.312528175880152, 9.072426201364811],
                          [-5.5329864922490914, 1.3681576267420914, -2.9962789113758914, 1.1805877383771748, -1.1727360989475766, -3.0334405374569635, 0.24082744014884844, 1.2745548563169782, 3.6640706145869864, 1.450239057462672, 0.43774922918318027, -5.139121137322196, -2.1842397317007856, -1.7226736633847843, 5.003903006525603, 1.555677376370723, 4.592628073610951, 0.031529946446351376, 1.9620386750575327, 1.3115193273334391, 2.97144042923956, 4.3586285713805735, -3.0209104071865602, -2.026289674016738, -2.179100342988682, 0.19956140445455484, -0.6422687649699342, -0.4843021746912696, 0.8676971938854262, -3.4282566958973373],
                          [4.749688683748538, -3.0130962354663238, -0.8964734715061581, -5.404408901826174, 3.2519001244819705, 4.700501169041437, -0.48584192208462884, 2.1290198545775536, -5.743986607455017, 5.05072704099386, 5.290426760843522, 10.017074714718186, 4.109783454482344, -2.171588999232304, -9.143973237995885, 2.1580967522563212, -4.288300573083361, 8.440796859622568, 0.6229337082016434, 0.3668577705895741, -5.372666211859802, -6.422211641960874, 12.41021882450194, 3.7493570416711957, 2.7699126830365564, 3.5082222436746777, -5.740173772592829, 6.606652001961278, 5.630677773801195, 6.253155297611987],
                          [4.559034813600619, 0.1913350266480245, -9.72469888506327, 16.676435885179576, -11.815244699143054, -2.963619615334862, 2.644195062564698, -3.5045347535842035, 1.5394738508529109, 3.2479533092428405, 4.136178478443613, -1.4150422310097437, 0.18077736159480107, -2.5167947201866085, 6.160828524988144, -6.794575512958723, 0.07581772972899481, 0.7273671762874099, 1.6683055420721837, 1.2534583279579286, 7.270581180009739, -5.020680731171347, -10.710260791368778, -3.482314899976028, -3.159956937857408, -5.264233710547034, 7.244641579264396, -10.641144576600027, -0.028015125221679434, 0.21956976936330955],
                          [-2.5513085043810344, -5.624763316256503, 5.8227501198454705, -18.83984795424589, 2.287665332808314, 3.202650930764413, -0.14315718142819273, -1.9393371050172241, -7.297486396599838, 4.714811455331595, -2.285923849103187, 1.5719145123582468, 1.1886888386113303, 0.6651250486650224, -3.62112489105088, 7.315055227559002, 2.5920811268356303, -3.6049680612829635, -1.2692515127885735, -4.603628537664914, -6.1868646030843815, 8.62584019419564, 15.640620254332642, 9.339712043883617, 0.7005649246134704, 8.033185101455041, -8.984569662115023, 8.756788125840803, 3.0002946387562526, 1.5527019436374203],
                          [-3.861290375479539, -4.675448372631536, 9.251215593601152, -23.607840924556356, -8.695565550492798, -2.9890761291947134, -4.7394354006804384, 2.8356784578772074, -0.09816665388344539, -12.599368055638564, -10.371683803332736, -6.880266107606954, -13.323520170751154, 0.8366430981369344, 5.174040794619552, 10.49263721553011, 6.8020531332912935, -6.116168624020712, 0.6121682022083461, -1.5616787444124285, -2.961017400369882, 14.555633724082611, -2.408921040101399, 4.164763222501917, -1.2885371130833283, 0.5249215999155405, -0.4197438099013884, 6.847306921165118, -2.4178117806412915, -7.702891475003848],
                          [4.161137142387705, 1.4820377177923658, 1.2871131760474233, -11.780576083757202, -13.704438843176279, 2.2529706444658775, -4.628978648000722, -8.44852567895537, 4.501241923053804, 3.2180822100676387, -9.096692746700437, -6.359766478822383, 2.458766877052462, 2.7472396634682528, 11.352826871439879, 1.6900717568947712, -4.9446475840448105, 1.2874782451208633, -5.514465163301222, -0.43632046338437597, -2.460885613501708, -2.7668726158968946, -5.244256957948294, 3.839764805067356, 1.9744867737957825, -3.8504675955016556, -5.719184031653332, 3.1125551947104624, 2.1919986794855943, -0.13026077572473954],
                          [2.1053106927251957, 0.544816987896791, 1.8463460394236781, -0.5097848054883325, -8.19139781918348, -0.22684979135170835, -3.0851797887818924, -5.699211118481947, 3.293594390108838, -2.909444711189409, -7.764958328853763, -1.1668970305075335, 3.020313808115756, 6.799166924533074, 10.7746541697421, 1.5250393026865812, -7.554231411053715, -0.5870131079195986, -1.3007596553023062, -4.080716282648349, -2.186465568681216, -2.4064847064680794, -6.958047179121224, -3.2357537230417077, -4.304227928343334, 0.20637053734784094, -2.6250272141353848, -5.715311685851154, 1.3755895996309002, 7.31396280189546],
                          [4.4606143748925815, 3.1952976197848404, -8.190318873976533, 17.720929604353678, 1.0799035076752885, 4.032046572169589, 6.846170634331792, -2.990923968785385, -1.0138487919520105, 4.210550185586089, 0.7647110258199106, 6.307647053631859, 6.791811206494187, 1.3588577626377345, -1.6246138143018776, -10.150256933841442, -8.955086516370987, 2.41129571860055, 2.9918358631703246, -2.0841054852597667, -0.38788283603335283, -12.037911290804784, 0.7847814450043312, -3.5125859319946096, -6.3580512246788015, 2.354270933909405, 1.7629785519170058, -7.508929712507494, 4.153956520027669, 8.430589071222315],
                          [0.11299545143656423, 0.3719367861398056, -7.025568330781, 9.769013689448464, -0.640793257766108, -11.677067837314976, 1.4515727489278767, 1.1715021644690176, 1.6926476580912793, -0.881205326796837, 4.268282553052323, -5.637459471007516, -4.8974500013531115, 0.17173589307977707, -0.9211330468045001, -2.4905148715845815, 9.607046944744821, -7.206797204798768, 4.349647727744751, 4.621339140117586, 10.832359506208546, 5.100626759149631, -4.076131311364439, -0.9327754879353387, 0.5026551214022198, -8.6858164471001, 15.294166113376837, -5.994248698329602, -11.694453405846096, -11.801285777570579],
                          [3.672120136902007, 2.6266279533884895, -6.295270647326517, -1.069859934951232, -3.8113302994051375, 1.5949006885529526, -0.8226494216103423, -2.9961023548979657, 0.011410712161871278, 3.8049739555840176, 0.29095969601553967, 0.15441256642165688, 6.0091236927948035, 1.0488409418576379, 0.11420533472469993, 1.041139886749876, -1.7664882512232245, -1.2322615086785684, 3.2960713266398476, -2.373608140335303, -1.250158758539599, -0.7208731345537661, -0.6156773187005177, 1.4032590478706066, 3.0055294423481325, -1.215626145907597, 0.04209426947719365, -2.2318793590146617, 1.6113608788934293, 6.469735186892669],
                          [-5.818552929715837, -0.9169295712328542, -0.366611990060092, -5.1299503247235405, 6.905064130414796, -6.5445798712234575, -7.16220048221164, -1.2183927219650177, 0.02838697214804719, 13.304659303178061, 5.212031101975595, -0.1984145756217106, 2.043938045553383, -0.29548032145709496, -9.738766031154933, 4.373893439532715, 5.133821298601127, -6.818797238217159, 2.032166191824439, 1.2990684156080132, -5.2824866779081745, 8.79704452443048, 12.849891231025046, 2.7871568041542045, 6.2258818054938425, -4.429387659772509, -7.4036051874247, 3.4789466856660187, 1.6328914814136246, -1.1057519935283844],
                          [3.4868785913811906, 2.6339386298341982, -3.8345442598175135, 6.338661537296378, 0.08440220487435036, 0.891537452927858, 7.386752241464462, -3.1433412659900224, 0.17569569189932993, -1.189840684944929, 2.063745656499299, -3.873741753209196, 7.631037421790815, 0.8704075199916941, 5.4169231361090375, -4.796174802688587, -5.441484022053353, 7.113220057014851, -4.021007101784125, 1.0933378235540314, -0.7237134159105555, -11.778856908851662, -8.947505317275446, 0.37169797000665405, -3.3683497769665385, 4.657443083154591, 0.453955538023004, -1.7407016169440057, -1.6522054174095602, 1.0293176939756639],
                          [2.46194490699664, -0.3367320063335661, -0.5524038255785771, -8.452671777634976, -5.633844858472623, 4.461702367049373, -3.7791579697242024, 2.769245822243623, -1.006803537946152, 1.372993145527169, -2.883759917737196, 3.9353447413494282, 1.5888078809409378, 1.6663327424869052, -3.3451072476151555, 9.018878681488209, 4.966343941267382, -2.378406115718362, 4.984115491643569, -6.369451753840427, -4.810457553048149, 4.695631510723671, 8.870216904135045, 1.8512664237737275, 0.4785318619045305, 2.2841714202034744, -1.6997915076850245, 4.11585412102773, 2.079681507808699, 6.064422880045283]])

    su=0
    su2=0
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i])

    z1=numpy.dot(z1,matrix30D)

    for i in range(0,30):
        su=su+(z1[i]**2)

    for i in range(0,30):
        su2=su2+numpy.cos(2*numpy.pi*z1[i])

    s=-20*numpy.exp(-0.2*numpy.sqrt((1/30)*su))-numpy.exp((1/30)*su2)+20+2.71828+bias
    return s

def F9(x):
    bias = -330.0

    offsets = [1.9005, -1.5644, -0.9788, -2.2536, 2.499, -3.2853, 0.9759,
               -3.6661, 0.0985, -3.2465, 3.806, -2.6834, -1.3701, 4.1821,
               2.4856, -4.2237, 3.3653, 2.1532, -3.0929, 4.3105, -2.9861,
               3.4936, -2.7289, -4.1266, -2.59, 1.3124, -1.799, -1.189, -0.1053,
               -3.1074, -3.9641, -4.3387, 3.0705, 3.3205, -3.8178, -1.498,
               -4.3807, 2.711, -3.7956, -2.3627, 4.0086, -1.3728, -4.4362,
               -2.9183, -2.2457, 0.3065, -0.8924, -3.2364, -1.2521, 2.7198,
               -3.9787, 3.0678, -4.24, -3.958, 3.9479, 0.2203, -2.6124, 2.6498,
               -2.3256, -1.5383, 3.476, 2.4462, 2.4575, 3.7409, -2.4887, 3.8555,
               -1.1426, 1.3389, 2.2323, 2.3137, -4.337, 3.926, 3.5905, -1.2858,
               -2.0113, 2.9087, 3.9278, 1.0812, -0.7461, 3.474, 2.3036, -3.3781,
               -0.4491, 0.9402, -3.0583, -4.2165, -2.3604, 0.8364, 1.4773,
               -2.7292, -1.5904, 0.7696, 0.5164, 2.6576, -0.5427, 1.0358,
               0.6926, -4.2775, -1.5911, -3.5775]

    su=0
    su2=0
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i])
    for i in range(0,30):
        su=su + (z1[i]**2-10*numpy.cos(2*numpy.pi*z1[i])) + 10

    s=su+bias
    return s

def F10(x):
    bias = -330.0

    offsets = [1.9005, -1.5644, -0.9788, -2.2536, 2.499, -3.2853, 0.9759,
               -3.6661, 0.0985, -3.2465, 3.806, -2.6834, -1.3701, 4.1821,
               2.4856, -4.2237, 3.3653, 2.1532, -3.0929, 4.3105, -2.9861,
               3.4936, -2.7289, -4.1266, -2.59, 1.3124, -1.799, -1.189, -0.1053,
               -3.1074, -3.9641, -4.3387, 3.0705, 3.3205, -3.8178, -1.498,
               -4.3807, 2.711, -3.7956, -2.3627, 4.0086, -1.3728, -4.4362,
               -2.9183, -2.2457, 0.3065, -0.8924, -3.2364, -1.2521, 2.7198,
               -3.9787, 3.0678, -4.24, -3.958, 3.9479, 0.2203, -2.6124, 2.6498,
               -2.3256, -1.5383, 3.476, 2.4462, 2.4575, 3.7409, -2.4887, 3.8555,
               -1.1426, 1.3389, 2.2323, 2.3137, -4.337, 3.926, 3.5905, -1.2858,
               -2.0113, 2.9087, 3.9278, 1.0812, -0.7461, 3.474, 2.3036, -3.3781,
               -0.4491, 0.9402, -3.0583, -4.2165, -2.3604, 0.8364, 1.4773,
               -2.7292, -1.5904, 0.7696, 0.5164, 2.6576, -0.5427, 1.0358,
               0.6926, -4.2775, -1.5911, -3.5775]
    matrix30D = numpy.array([[0.06335258949852296, 0.05672305076252325, -0.02695070941427732, 0.5036772915089572, -0.17229433871272504, 0.18640203659987595, 0.007339703197867826, -0.3309891648916064, 0.04266518911929274, 0.07016071371497765, 0.0032679132554803312, -0.14972020339323092, 0.10373777561442425, -0.2659773961279128, -0.09578172975496194, 0.03160639180911339, 0.2379225189603566, 0.5918541116066094, 0.3364007304371468, 0.23392627475841743, -0.5839410727306553, 0.3540500180951431, 0.15298918062807598, -0.030256480178875365, -0.2539723815560839, 0.31572678634248547, -0.3515077666736317, -0.3048008899075772, -0.060246527470463704, 0.14784275286950338],
                          [-0.15303824114632544, 0.183585351002781, -0.14343088966796802, -0.030368486493833252, -0.24045786963278276, -0.03447197622003516, 0.07075250855636125, -0.33818894801085264, 0.574022354733769, -0.29999811349627287, -0.011816642073004084, -0.2028278864622005, 0.12148286246059095, 0.27628216666834293, -0.3630176651145949, -0.43656278888976596, 0.25449693389248257, 0.01866727951428067, -0.08797734177188053, -0.12612561251090862, 0.14350306337753108, 0.1647168697868917, -0.006177744203272412, -0.8468317153538225, -0.2765566614212845, -0.07228260858773611, -0.04007650347414116, 0.004383259418973454, 0.019246963531342157, -0.4171391203449824],
                          [-0.09461622991205118, -0.1685735084816444, -0.13820485006442146, 0.3339834665393658, -0.0458230892810814, -0.15126745263475783, 0.10470289793845276, 0.27633450351527145, 0.3134570150665945, -0.014216228422573023, -0.21149308945846634, 0.24789011794141738, 0.06168276281323435, -0.1011537070746861, 0.676510330993916, -0.2376149255236887, 0.2242221281147384, -0.10478403606959068, 0.30501541776493385, 0.40184550037919614, -0.031998325404569206, -0.08581137280623216, -0.2679153025970472, -0.11954616459090261, -0.040723833688222015, -0.4050394856509804, 0.015019639187367363, 0.13667079048804404, 0.28899443907879996, -0.2633435086169651],
                          [0.07973133030861902, -0.2902974686640666, -0.15711033378260056, 0.14805619823469293, -0.31403841896355017, 0.14830673685132398, -0.09641563354406664, 0.3911162579920498, -0.003990584756873014, 0.10173782181061546, -0.17007538709175166, -0.1592719793922661, 0.1883511036137417, 0.2972786497313627, -0.24984743261669734, 0.35776550824778963, -0.16545432898652054, 0.10990465300888526, -0.0996333887328015, 0.5365011152239183, 0.6679368922565107, 0.1607290132825583, 0.030180406715580595, -0.008371438932845567, -0.186049998692845, 0.17200654086355155, 0.5065133265488687, -0.01821378264611957, -0.5131022761715736, 0.0913534135133195],
                          [-0.3909786914772958, -0.4051631354570161, -0.29280344754806076, -0.03335001867839192, 0.16773031217578363, -0.2174663849548531, -0.028288010081692985, 0.6093403284631902, -0.12905128754630954, 0.015383241083884502, 0.2667713217812024, 0.07126257881898007, -0.08825633441407976, 0.20016851943143352, 0.21404662174010528, -0.28957335795260486, -0.22523641420841328, -0.012098621720922725, -0.4318595557910643, -0.10205590950971773, 0.1760178756410006, 0.8895991774260724, 0.29692315512112943, -0.23234762222452876, 0.26719466953478455, -0.018717538884440096, -0.3940794109323505, 0.07100412954210301, -0.5006836101778509, -0.07000845703250935],
                          [0.11640775059901108, -0.12411817286987235, 0.001670826828277877, -0.11655231072970242, -0.28712159807233895, 0.38324047856083815, -0.02317078434872634, -0.2324167393940222, 0.3942032485586294, 0.18017436277032778, 0.1154463424105523, -0.2813506977146114, -0.47636575565475026, -0.32774731322460937, -0.15241662374533727, -0.4760273994959571, -0.2608210668461727, -0.3428501171256769, 0.4188170865298606, 0.1359071771738531, 0.5000528739873007, 0.2248427993635855, 0.7584568413669648, 0.14197748119565942, 0.23124559527700234, 0.1881757454971244, 0.2215402738719409, -0.5377913031133401, 0.1614593901532991, 0.32648117861603754],
                          [0.2807602660555922, -0.20459814784556232, 0.5017108059447317, -0.09981461706697946, 0.371303634468467, -0.2847352808745651, 0.5037057270302671, -0.0310741881991538, 0.13922571090137803, 0.6209383878283083, 0.366021957072266, -0.18911637623628827, 0.03131100013513387, -0.2699425011341873, 0.08179040045016489, -0.3025613643955995, 0.30798895655272296, 0.057762327049527204, -0.025984640435035258, -0.08403212917549135, 0.004871402503692779, -0.13369198165259943, -0.22501015701437, 0.26722614828920804, -0.31452111240625147, 0.13111373390155406, 0.06364423359379096, -0.1361161576388387, -0.6162277604532115, -0.5223194390707014],
                          [0.21809792855351498, -0.015659253162891282, -0.03139629164532687, -0.29831526548691295, -0.6348013423829633, -0.08040903669775848, -0.05764498554378858, 0.19627871330339058, 0.18165656462608568, 0.11810278280167409, -0.0188863168144262, 0.33756700632674586, -0.3502494533027744, -0.42796866596963046, -0.2195897933184021, -0.1761629111633228, -0.14218717912062934, 0.22157310812540337, 0.06149377035521008, 0.20108102491589547, -0.08712108154447262, -0.2958898723889339, -0.25061272832655124, -0.02506364781253062, 0.18925836759833997, 0.05042484020763617, -0.14985557590469015, 0.4605369829616045, -0.1994223892735207, 0.3048349230240463],
                          [-0.04977155926838571, 0.09413283247490722, 0.2365075674600621, -0.033102298276168195, 0.14871067841765573, 0.16679259138580066, -0.7250131283541154, 0.19344718089168617, 0.16077444297823196, 0.4742932220190952, -0.457138015764315, 0.42216078662862944, -0.4217573313848444, -0.23850947864798056, -0.0836670106815892, 0.040603511075240524, 0.2161632396553658, -0.1376829372368324, -0.5626568078696313, 0.12858720436076043, -0.23135843593208363, -0.10064553874378594, 0.2975063249203477, -0.016698629430390778, 0.05183192762508454, 0.282538598642444, 0.029728283251851895, -0.18897748034632633, 0.057359157117103, -0.3345247359484555],
                          [-0.1392563327519083, 0.2220909895496909, -0.12012828708841183, -0.3161483737713023, 0.05118300596101006, 0.2754022567695218, -0.35925174441493535, -0.44297397481374373, 0.15011794783112334, 0.30199433865476166, -0.4704996606672661, 0.27273902679492884, 0.4228919491565102, 0.024057006386366618, 0.5458374155056723, -0.2454770930791788, 0.04600394398326692, 0.053530859107174464, -0.19432644915130357, -0.03881931406297027, 0.2529774513980233, 0.15403952082127018, -0.26799915887122333, -0.031286434673164984, -0.263206349961535, 0.1871480077284608, -0.24730717839944527, 0.20301608532527807, -0.28864922104713764, 0.6311149821166675],
                          [0.22074266351601457, -0.11266075532698061, -0.0722415820193467, -0.03592274427381795, 0.10159862684335982, 0.20799823630206574, 0.2198823861339132, -0.6066004552788643, -0.21393148333055445, -0.06265884287402183, 0.04600059272218315, 0.09278488783400352, -0.1125126425644487, 0.6481651539049006, 0.18531037045724286, -0.690760359023849, 0.17023209807096473, -0.1758342088164826, -0.14739114115086022, 0.021884252222916525, -0.5167467136681062, 0.08112659157833388, -0.18607182988440127, 0.03537864607385664, 0.052475296638563124, 0.5255169247366382, 0.4733049609096269, 0.028836894787041958, -0.05063412794434164, -0.07237978284709261],
                          [0.15227857012773682, 0.35890907545504747, 0.40311576678653227, -0.670794634047272, 0.08453881452617241, -0.11878067788422383, 0.1671073484415434, -0.09594153342794279, 0.17337352202551856, -0.17717436234025222, -0.05894552278360876, 0.11168668267598318, -0.06191622975281925, 0.5639565381375082, 0.41791622486727664, 0.07461322437330618, 0.14658483315164927, 0.324616404220787, 0.07552473311911745, 0.5198295716318212, 0.2303303496134756, -0.33161492836201656, 0.5117039074965118, 0.28547087590118064, 0.20073840807203575, -0.1472559207574819, -0.4625575469730994, -0.06032745209744485, -0.49896731024407665, -0.01971324233877178],
                          [0.3144352921471098, 0.09155170128060593, 0.24131250171541102, 0.3082364310107559, -0.015751811615472695, -0.10837694969979236, -0.33368256804806223, -0.09773665439564928, -0.23415834339896408, 0.19895365656634859, 0.11866077269974197, -0.7063793761419398, -0.2966729518045654, -0.03892519635968982, 0.4071865300175129, 0.10879528190943742, -0.09314848229345235, -0.2537308295168225, 0.17769258797233684, -0.011904351194733081, 0.014004256163295823, -0.080122743851896, 0.16405392512187764, -0.40277077092674984, 0.18563791255097423, -0.4159919240106178, 0.12529767835121203, 0.4274814162256622, -0.08678716160086684, 0.1357413038260568],
                          [0.6245639189801953, -0.021194385261232473, 0.15790651976032902, 0.020046793068165814, 0.013485287207486447, -0.19143050922350266, 0.053053619287120934, 0.1648025816684513, -0.02558107879906038, -0.5204849608828906, 0.27366106496207987, 0.37268447698550033, 0.5056389902510714, -0.5060716527836658, 0.17622109812935938, -0.16088276699725435, 0.09115420832801799, -0.3193721151009111, 0.1007622086850195, 0.17199096873026187, 0.11170952761795268, 0.15276479657982292, -0.07280382811968383, -0.3044514302215227, 0.34296871062700884, 0.33763415872847674, -0.03258919790417299, -0.3946276729967768, -0.13173293396858948, -0.23186690614308192],
                          [-0.33469228494985137, 0.20799931761035834, -0.0645235389515046, 0.4183383075968552, 0.06416955506782063, 0.1752731715255125, -0.11082704894603775, -0.4374198408666582, -0.39351853787706437, -0.28604100205000355, 0.5691018990593724, 0.10181603584935292, -0.45485482259097904, 0.06360362112520623, -0.10655964113618122, 0.01978208862729827, 0.07772065824803223, -0.029510223386463082, -0.12437913293723712, 0.2578126861040272, 0.5760449905641809, -0.2258142264336958, -0.40572768097048034, 0.157649041106536, -0.011341289128143667, 0.14851350034808614, -0.05552788406565953, -0.355072688281002, -0.22404728666046494, -0.12539346485283065],
                          [-0.19850895807711058, 0.4532639745313272, -0.10398033683866753, 0.03263380125003023, 0.09131401942401332, -0.5690381765576734, -0.2728648985674325, 0.40988738750653836, -0.0826698599947914, 0.1900962970736503, -0.09192692333289024, -0.08817260622682042, -0.2556802496385996, 0.25677859500848793, 0.12486970262940503, -0.23789170778049062, 0.24286433093315454, 0.26459619311082727, 0.22474512771605368, -0.02629623262854933, 0.006466976876191574, 0.24451032686765417, -0.21189052231900604, 0.002285070964737742, 0.3211765782645637, 0.2757981310844412, 0.2769877200223868, -0.5189171588724941, 0.1805248049110005, 0.23591694484557954],
                          [-0.31942635721679, -0.1815973160218126, -0.062138905606841405, -0.23095094676068476, -0.16355391317440895, 0.06274372372512839, -0.44562776381459746, 0.17784844982906634, 0.3624980631029926, -0.17975683881766333, 0.5555543164936071, -0.42018934556316945, 0.3933513494297034, -0.003876469010719, 0.4677439829364408, 0.11218926829095412, -0.2191750791691326, 0.31003503866519394, 0.012568335546410068, 0.06671256009424531, -0.1537048742007257, -0.7070505180084038, -0.21904334332760392, 0.14204759439403283, 0.21992215382554028, 0.1742363538768358, 0.20309131798586313, -0.33370216189057095, 0.0406825364530199, -0.3337944617495834],
                          [0.05287868724949856, -0.30608131674192995, 0.4045471731319519, 0.17044314492885823, -0.03628647352207799, -0.17340755399328106, 0.16075335121374462, 0.23993018676500177, 0.7538989376567938, -0.2758321242550274, -0.2919563906967567, 0.045478124446842676, -0.26024227411294654, 0.2930355566173637, 0.21107229602275898, 0.12362281077672166, -0.18897873891249867, -0.22110317637406918, -0.17747628664673934, -0.14851477409108343, -0.08124872456294821, 0.14961261809138654, -0.4781945922972805, 0.20600894669061368, 0.1998160608534948, 0.04570236137589734, -0.18436806734899275, -0.19619834388626295, -0.027134280656839656, 0.2167352344151729],
                          [-0.12098851840808815, 0.10045906754921452, 0.20471084225037173, -0.47266092521609576, -0.3382958675302724, -0.2948153380803361, 0.0006533732309131589, -0.07305947030990889, -0.41371927088380983, -0.31262153628757894, -0.2671883689737768, -0.3758017865369472, -0.04449075092351616, -0.2055455065566696, -0.03882714296576443, 0.19309451680858764, -0.269420481281664, -0.36344740384626795, 0.11646121573376635, 0.5594932561274332, -0.13855118758774485, 0.4816455983468774, -0.5654091116812393, 0.06813489514455655, -0.3042719372650152, 0.02615675459410987, -0.42093466523717066, 0.020777143271129575, 0.3257254219854145, -0.1533228280168162],
                          [-0.44930782843651795, 0.2447266797743762, 0.16737635815761187, -0.13430001529183805, -0.2745339036748697, 0.03947903414068177, -0.006373820025268782, -0.10505299872164929, -0.31079040895401294, -0.693513467167076, -0.5263914827840172, 0.007256974836705082, -0.09118557685987336, -0.43556940780065884, 0.1255004414086437, -0.25015968690685886, -0.13159571769917278, 0.21365691024452527, -0.3316308490718226, -0.4853067570023412, 0.17371913880855583, -0.1018403477721275, 0.2615530928599693, 0.16760356630961928, 0.0753858634221938, 0.01274344384846103, 0.5481716392540166, 0.416295471616993, -0.30820534457037735, -0.27904132047576524],
                          [0.05560324052577517, 0.37622417785064627, 0.17167152742138964, 0.38887755533328106, -0.5057137836073247, -0.15936721545761376, -0.056673554795662454, -0.2780198894532408, -0.12444596303043737, 0.4403390016264669, -0.0725275949272298, 0.3320846739161083, 0.5397465992622228, 0.5639719705526293, -0.3761532885509307, -0.17956544126243673, -0.21205781403078797, -0.06661455426643254, 0.23029648388321358, -0.10021971123949601, 0.011754999771520605, 0.18169814370133233, -0.1838657144098942, 0.5152012651450554, 0.3386999648397855, -0.33692492698433935, -0.159312800094762, 0.14537981887358953, -0.13639381352982102, -0.3949701191524413],
                          [-0.44998772224654765, 0.23838811137117805, -0.370224416055436, 0.152073074162235, -0.052672803829473036, -0.3783361561885239, -0.3215140778529922, 0.08906623257389529, 0.22208756809702468, -0.1731079380303258, 0.2656389517221004, -0.053273720087529494, 0.2018674832982632, -0.14449839225557942, -0.341758341589261, 0.30548865658921287, 0.5902168590120951, -0.6809519090119021, 0.1667522501576729, 0.18663305009546455, -0.22857089144903744, -0.08134277871682119, 0.43154350737026487, 0.3947700808589092, -0.06165851533681578, 0.28455104184414504, -0.1679119845437667, 0.27370661419920417, -0.365698226482665, -0.14846258804785598],
                          [-0.5093047682318179, 0.05514526879284861, 0.5573652541862978, 0.19116309158266145, -0.5549307057681351, 0.17263562082753675, 0.22195319353503512, 0.39231597399574086, -0.2627061543489674, 0.31531135515250497, 0.04683663340920785, 0.3174625459631497, 0.15587527714923358, 0.08491312910978416, 0.18147885992927765, -0.007952704227990853, -0.3377388592569701, -0.3527333644172903, 0.15223884149437325, -0.3803699002140566, -0.07683068819108986, -0.24148856814584913, 0.1063726411341036, -0.29896451116624967, -0.5469365920450053, 0.21206819416691797, -0.03630748598851463, -0.27154233102382935, -0.014664628992897813, 0.19382418530329498],
                          [0.11154886613263536, 0.6437149806999989, 0.11664996244848248, 0.3676809924091751, 0.29895796311783873, -0.06051388504408904, -0.012162057399845444, 0.3649781966606572, 0.06095497193092535, -0.17668123997779805, -0.21884683182836137, -0.08895448914261682, 0.10689520492332445, -0.15144390319388643, -0.36392522884452105, -0.5314576859632357, -0.6228583061558366, -0.15538277682004253, -0.30211357438769637, 0.4387267234803507, -0.33767207313498454, -0.2877550921672262, -0.12075393220669384, 0.22962491263881035, -0.25275962117475137, 0.13047689624678388, -0.008527935223278924, -0.10974660424916488, -0.07592440991435138, 0.2726091483131775],
                          [-0.27158074399957677, -0.34871063311664535, 0.0198012108654956, 0.06017236866260716, -0.016669316871492347, 0.09795650859553666, 0.3190251208859632, -0.036543774787308074, -0.3543901690267282, -0.156283210442647, -0.6094463957983466, -0.42925901468284816, 0.10292567605791395, 0.056079043347752426, -0.2171925114493125, -0.23356235871036382, 0.470258177144928, 0.15721644654023753, -0.03337048004528811, 0.2842382453893308, 0.11465876057709301, -0.2226097629053654, -0.10579486570029173, -0.0386911739168872, 0.8390292886798072, 0.2202690762214671, -0.37348346016359796, -0.3205073207436112, 0.3090520870949553, 0.10119829169347228],
                          [-0.2848376671325233, -0.3867652985650254, 0.28954064586952777, -0.10278504879082706, 0.5797936359249891, 0.6190299382678774, -0.3522683245500386, 0.21653752181435718, -0.21158684823484045, -0.23313749375995335, -0.019952272259973924, 0.11023535324932031, -0.1272288313234855, 0.10022619920907408, -0.28013781424922346, -0.10797535911704169, 0.25895903046357466, -0.03863229363855216, 0.3754011106268033, -0.0237847472355025, -0.17760365037457235, 0.11032452920669877, -0.3208676138855241, 0.2815400607111184, 0.0746602227885565, -0.26088730658023945, 0.2652751212490844, -0.09960258785335363, -0.5573809172298311, 0.17963455059211758],
                          [-0.47819406439647205, 0.4535402810748514, 0.021414164562559734, -0.2726232008994901, 0.13093585523562906, 0.32285996093030656, 0.3890794019536873, -0.02627496526152142, 0.26691099541019464, 0.13572777118037122, 0.039988310336496545, 0.058593329395910436, 0.16183477874626123, -0.1563044061236729, 0.16745559631137608, 0.38328718243274174, -0.4747636886775456, -0.04709468544943507, 0.12140831206618286, 0.24901239537734782, 0.04364697971315729, 0.19765303749138097, -0.10376854275295036, -0.3749844302317146, 0.42764442225019855, 0.6124177516044889, 0.19730113740988187, 0.2322955303254538, -0.07876537526371702, -0.33827090875675925],
                          [0.14725587741674584, 0.6225315611759047, 0.12702206769352406, -0.055254918241399345, -0.4617839929343705, 0.6690884728432455, 0.1878079771484699, 0.6052734499425834, 0.1993987643264288, 0.06756678885622325, 0.19079690602654734, -0.08872102668962367, 0.10752288316770534, -0.038803464307073085, -0.04771504332165819, -0.1971112461682327, 0.5972408430904755, 0.026290758226777032, -0.4165790241992454, -0.020965391894001477, 0.1345228083415431, 0.4299963860747021, -0.07089836187056582, 0.31470217812769646, 0.2689460613442491, -0.1685757783824816, 0.21330591105377716, -0.026906071922239864, 0.31643202123696357, 0.022194189195356026],
                          [0.35903925081536275, -0.07214806221911754, -0.1564836135387715, -0.024302181008234645, 0.3497926609272494, 0.52274171546098, -0.36769968731431857, 0.3839189282123319, -0.011020491967528034, -0.10393713144084128, -0.17755040448546563, -0.1381720442205483, -0.09278080257034885, -0.18251032954153196, 0.07033965947159586, -0.05716092128350151, 0.06261900184717739, 0.1562349132621388, 0.4773873664624826, -0.38393596527767937, 0.016053069972589793, 0.050648948855668306, -0.09876341932159212, 0.14423735208049157, -0.17159220321086766, 0.6623412204492125, -0.4250457604765382, 0.5838788233673984, 0.0904921288625179, -0.4032949259989454],
                          [-0.06839276629159381, -0.2598313462332782, 0.6167922709991274, 0.2562527715425454, 0.23655696114094105, 0.030866034264359594, -0.23933241275518116, 0.09868947711597731, 0.2817545408123683, -0.14920906302395515, 0.45726924806653785, 0.032197046147603534, 0.38316766942320973, 0.2889527397297365, -0.17165722981895515, -0.09162247668781096, 0.03899888505412967, 0.4637568330553473, 0.01369751444235539, 0.09268275159648072, 0.3184102981049872, 0.25510245540510856, 0.004474388575249632, 0.018541196836009775, -0.18698962512229167, 0.17459770017003354, 0.257186471540121, 0.5741096605396063, 0.5359206271361305, 0.2261381342792902]])

    su=0
    su2=0
    z1=[]
    for i in range(0,30):
        z1.append(x[i]-offsets[i])

    z1=numpy.dot(z1,matrix30D)

    for i in range(0,30):
        su=su+z1[i]**2-(10*numpy.cos(2*numpy.pi*z1[i]))+10

    s=su+bias
    return s

def F11(x):

    bias = 90.0

    offsets = [-0.1367, 0.1186, -0.0968, 0.0237, -0.2933, -0.0478, 0.3518,
               0.3579, -0.0586, -0.0375, 0.253, 0.3165, 0.3974, 0.3813, 0.1718,
               -0.2854, 0.0849, -0.18, -0.0942, -0.1684, -0.1939, -0.0154,
               0.198, -0.1252, 0.2211, -0.0536, -0.2085, 0.3883, -0.2305,
               0.1972, 0.1802, -0.2742, 0.3224, 0.2133, 0.116, -0.3053, 0.337,
               0.2232, -0.0619, 0.0743, -0.1337, -0.2071, 0.2378, -0.1349,
               -0.0009, -0.2858, 0.1892, 0.0775, -0.3299, -0.3864, 0.029,
               0.1797, -0.3591, 0.2299, 0.2227, -0.0747, 0.2258, -0.0291,
               -0.055, 0.344, 0.0219, -0.3578, 0.3695, -0.0036, 0.1446, 0.0133,
               -0.3803, 0.0483, -0.0406, 0.1314, -0.3729, -0.1127, -0.1502,
               -0.1911, -0.3004, -0.1845, -0.1738, 0.0771, -0.3186, 0.2763,
               -0.1197, -0.3663, 0.1649, 0.205, 0.0431, 0.0131, -0.1709, 0.3491,
               -0.1357, 0.1072, 0.3958, -0.2918, 0.1065, -0.3617, 0.0621,
               -0.0183, 0.0449, 0.3748, -0.3578, -0.1262]


    matrix30D = numpy.array([[-0.24415797617133117, -0.3629778598966794, -0.025771631863859217, 0.8229781816198142, -1.0016940502240026, 0.4296448224812279, 1.2473170610679825, -0.9378241839672766, 0.5806047982406501, 0.4115684796126129, 0.37378270762270127, 0.014477980320051913, 0.24111989003425846, 0.14208416160447723, 0.6431648703781747, -1.1960480734219814, -0.09541787405348977, -0.8826430338513224, 0.06157200009026991, 0.6518593178226029, 0.7356482715010267, -0.6524663204047787, -0.7148187616183787, -0.0856485125356522, 0.2175717453141174, -0.17759969600204073, 0.49023742257745073, -1.1831424839930096, -0.4984723253132853, 0.08744869210767466],
                          [0.0696863657945216, -0.5060813445994665, -0.02640078047539199, -0.4650825928424804, -0.011660254464842694, 0.30319144433961687, -0.01832001593989361, -0.1919892233594309, 0.2549400776258536, -0.1838723446922793, -0.2207368747600526, -0.1471054543307868, 0.3790018422866155, 0.030801483548504927, 0.32612886899231947, 0.26917928891695997, 0.030286949485795633, 0.6111944500481038, -0.23125092522758592, 0.756828249889362, 0.12289225796269292, -0.2085936114532866, -0.30575995026671166, -0.6076561993016952, 0.020547539028165016, -0.5948950904386973, -0.6989480504774146, 0.642317402028593, -0.658582668007117, -1.9310950228018156],
                          [0.6182210089859005, 0.08469883581782425, -0.715202750657864, -0.10689864320172354, 0.8815208048157552, -0.6723141944035139, 0.7025831889123358, -0.06336560769413899, -0.6505734238934142, -0.7964669005257073, -0.8748124658096694, -0.06356032275692644, -0.6081389795514863, 0.1349529532597709, 0.7214354566989988, -0.2404961135873736, 0.3903573578567388, -0.14117460619677125, 0.03135977518895493, -0.3465466148174292, 0.7252225612181439, -0.4676549382078047, 0.8072019777726889, 0.10333733388275301, -0.12363244332318712, 0.3693626729122148, 0.30991477446959703, 0.6825302395308693, -0.2316375646385486, 0.851419827678896],
                          [-0.1422838783275414, -0.3257611522236677, 0.3234042190680949, -0.40373848491187536, -0.07012446435116082, -0.4265850351231416, -0.06950293016609707, 1.0906290705010628, 0.23524253461138142, -0.8654284266933125, 0.21280070313115437, 0.1491382594227291, -0.03776545746276128, -0.8863933276646458, 0.5951933305720567, 0.24912543166106357, -0.412791413712175, 0.3214314670028321, -0.8335840905602045, 0.08044128467646398, 0.6412983804127074, 0.4608569967948416, -0.01970430080415135, 0.41110938370644307, 0.09111542346756432, -0.021878890404958315, -0.33055924958789107, -0.2536892077543866, 0.5609010686904733, -0.5673424974952329],
                          [-0.09454067257351423, 0.3349336031145085, 0.12510790781408673, 0.33934822087672445, -0.4303393713754486, -0.8500612921392777, -0.025830986147262775, -0.40261099282305074, 1.3795092249145322, 0.5830275612023639, 1.1723017382685115, -0.016084363194653832, -0.0010036934128044225, -0.45743031433085934, -0.028457788133284423, -0.04277097041381193, 0.6047959449548794, 1.0427550925924531, 0.08522772251130126, 1.026658128702627, -0.08823109167864493, 0.24176307315030804, -0.7529916756307705, 0.11613938699010794, -0.014876858620700373, -0.006399828109041203, -0.2019787407243364, -0.18088576354318964, 0.08089254517733155, -0.469265558941737],
                          [-0.02706813178554679, 0.010367219958836382, -0.25176931579503253, -0.25864110296971743, 0.02301718133034092, -0.43348529635746236, -0.006277106501408065, 0.13444457815819574, -0.5876226746740735, 1.1474269948293025, -0.17545466311197006, 0.473790154766074, 1.2007604078438672, -0.400960316564303, 0.3690009002692958, -0.3916827657161646, 0.48466106801406295, 0.5984772531795615, -0.20795982758734022, -0.5481712905551321, 1.0893371609991616, 0.9654213308832109, -1.1198944283147472, -0.5474807206091883, -0.494708735356575, 0.16557749200590863, 0.2643722481563944, -0.15870046483433192, 0.2135013665235056, 0.7130167160764739],
                          [-0.1662241926079159, -1.2937837601970033, -0.7849925628404485, 0.02255721697866861, 0.6998250452627367, 0.7923992827929015, -0.411549379614634, 0.005090237399313233, -0.19341858683544877, -0.45537301700736194, 0.6471173330826264, -0.6088699292679896, 0.35127180530483265, 0.025735231672505632, -0.06672835810901795, 0.8314206052184767, 0.18348978146728573, -0.2998819553296103, 0.20082892415721063, -0.5066416177807921, 0.5207418925992354, -0.738665481897798, -0.5104686404804015, -0.703701006453205, -1.200344615546625, -0.8060702357234216, -0.61024035085568, 0.3889180943616861, 0.05119932449950286, 0.6030731095801309],
                          [0.4559605864787219, 0.06437070571039213, 0.0954508689021255, -1.172840718633678, 0.17030688937141256, 0.466203952601758, 0.1406663641948111, -0.5770107384930494, -0.5185141761187327, 0.3544363696063443, 0.8930812142930364, 0.6462453641177555, -0.5310094565243813, -0.17800308964589293, -0.13379282610831977, -0.7528059077336271, -0.523235559882417, -0.47384741749215636, 0.44576835183928004, -0.3521099055382947, -1.2040114067658438, 0.30561033288239126, 0.4081217979936844, -0.02125373669832332, -0.2933905883878369, -0.04149665210875168, -0.008385243789877539, -0.2751327552923185, -0.1719910657294616, -0.3603111537158193],
                          [-1.2440209840194787, 0.18600960770413574, 1.5234473666150032, 0.6372164775914188, -0.7067872152820598, -0.09329682343981056, 0.07585319313081089, -0.27762936942960015, -0.27387269933041775, 0.4976916727982114, 0.5403836394843771, 0.14583962497295858, -0.4568172818788001, 0.040819854314474185, 0.35291684408409224, 0.09428835515473148, 0.3983850391736472, 0.4771255845270982, 0.25665398047825816, 0.44297030841999746, 0.379349438498325, -0.6483238267390634, -0.26597158107661395, -0.21937504315999423, 0.19820201974656781, 0.40810758258273117, 0.12344383052121652, 0.16004699151926552, -0.05003344532078717, 0.42265739101167593],
                          [0.5327905475470192, -0.7741849463651709, 0.26048305828149754, 0.6212894752480851, -0.2913208153869774, 0.845185856246884, -0.10573428432942601, -0.3004137020149608, -0.4536701213382787, 0.22962473845124998, -0.457878535088495, -0.9725776524066423, -1.026993523470228, -0.4136579543649682, -0.627761941014733, -0.005544649381651433, 0.5058052147512437, 0.1347004478560244, 0.46560180304523746, 0.3450436361359998, -0.9143593219139656, 0.5127974649718243, -0.06607415948686027, -0.04345874251862052, 0.5390462832936525, 0.06026415360873097, 0.7679484648287777, -0.7379514651587145, 0.07561107374386902, -0.01562365117071193],
                          [0.4478297965226008, 0.0999372699709477, -0.5234063910810418, -0.872493322683741, -0.17719934572116405, 0.05782265577492497, -0.052638119993973706, 0.28218855249259145, -0.35388264534215946, 0.7627195192894962, 0.34422778396797515, -0.1915018321957579, 0.2268120165814829, 0.43229900056073445, 0.22214070583925408, 0.41833846519962187, 0.2056888889144615, -0.37209036973458254, 0.46906911895840403, 0.8129271057756465, 0.20073669151979084, 0.23659176560377926, 1.1261787683959885, 1.4602709066505466, -0.0913765673262805, -0.8348264212257537, -0.9021955852991717, 0.08628224684233214, -0.696961286196059, 0.023611597817413846],
                          [-0.5778564377478782, -0.6153264061834051, -0.8410162575408124, -0.9259924765522334, -0.4792657867150168, 0.21231911561910727, 0.40160655422791613, 0.13319937655222414, -0.04519478467524819, -0.05888734609940097, -0.7433985581376058, 0.18428925253474931, -0.9222513386443089, 0.01687410426574945, 0.6615177068742466, 0.2592292786482728, 0.38873811329265606, -0.43793222473801374, -0.2300815633299828, 0.16586790473874363, -0.5430030083555014, 0.8535491016961871, 0.09983163092450519, 0.320509586584195, 0.13648222161540094, 0.6179855743217844, -0.8657952698899307, 0.1262854667032729, 0.6196451981288785, -0.5756246829443674],
                          [0.1780090514368573, 0.6574734686427509, -0.5801947140711495, -0.7113338505590743, -0.4209520387912745, 0.25759585985235073, 0.022386498096828543, 0.6875259851288092, -0.43206066674191973, -0.758127913170196, -0.6208648485819169, 0.7908604597118424, -0.7011277750841167, 0.6153544401736631, -0.7033573990562646, -0.3331012710105753, -0.19973395104155903, 0.36732247236949345, -0.8158990536790423, 0.07563657764321154, -0.14864927432559338, 0.4800229358933217, -0.32834323283387906, 0.4880931367066433, -0.046595345418194226, 0.31076297981222206, -0.11109418622486184, -0.704264617960512, 0.3458887455449835, -0.0011835147063002423],
                          [0.7788269169810891, 0.03379124395898091, -0.3887918326880264, -0.2772408139636585, -0.07656631597596125, -0.19631417493581454, -0.1740326702622334, -0.06961840922790455, 0.17141868920448045, -0.4377362641367542, -0.9560225923254281, -0.8292947219590668, 1.4125041074085158, -0.7650885589975412, -0.49523865569782155, -0.18380684115102158, 1.1170161797395441, -1.298380594809119, -1.0035360505485005, 0.2483028595307139, 0.0781388253071057, -0.42973199404826823, -0.5362836690691362, 0.2756137073824725, -0.09883587540870221, -0.2081774291903833, -0.5464783617389075, 0.06781646805721118, 0.16110809625603603, 0.23336329088558727],
                          [-0.6435097293659593, -0.606502859133339, 0.04177825214010064, 0.21250431217774393, 0.5689115788681713, 0.03099418612443204, -0.3869478691586266, 0.12658210424927868, -0.11440768154296067, 0.8530207796244793, -0.5687189077909988, -0.13535436802249456, 0.3720052427841296, 0.35360604020162834, -0.24827547805902822, -0.5769989931793598, 0.6682802147000084, -0.20797080431693934, 0.29357588352513614, 0.5054932944840316, -0.12740960649776967, -0.09942136234681635, 0.14278639744026145, 0.5806161476108449, 0.9328754175459328, -3.068204709107125e-05, 0.23751516869107858, 0.9032266296767456, -0.1888603565942328, 0.18883150858078682],
                          [0.5327651915724533, 0.11195771764132577, 0.1914076749842824, 0.5637726294423818, 0.7874770028352207, 0.4465234938374055, -0.2527589313564717, 0.7273644530371607, -0.15610547189212395, -0.09396708782256444, -0.10523121780701541, 0.21785417693363623, 0.4208338883501319, 0.44788139957492934, 1.0604521266570879, 1.4189801892530718, 0.4900696834276783, 0.5119411730390904, -0.12097198691340771, -0.07231393999358521, -0.36252072428382437, -0.2554817969260664, -0.28460459085668954, 0.49535873392421426, 0.27167118141506147, -0.22218683825173638, -0.26178475352298325, -0.22993556394813985, -0.3821433949677236, 0.23778269965655247],
                          [-0.7637447809131526, -0.44933701303800133, 0.31795139453301974, 0.5659841850677332, 0.15510223529664321, -0.547738949151706, 0.25622005577236345, 0.3712071531098663, 0.01324634420612504, -0.10212088736513447, -0.05810162962687612, 0.0904074585972174, 0.33777073318738343, 0.11816762945116313, 0.02761671369606078, 0.1292341058595661, 0.15820285689850766, 0.17729412156136612, -0.4353652355474657, 0.5947876043219285, 0.19891762637294358, 0.22722860406830364, 1.2601299736336238, -0.4163298561004527, -0.47272179469913467, 0.18402680878158123, -0.6939273599354413, -0.7261535952592272, 0.3563209223214253, 0.7190777882321077],
                          [0.027248949595568644, 0.15166546537934147, -0.4111693140488253, -0.20230784507415903, 0.15801529091832245, 0.1059294921252284, -0.11567588084304466, 0.6088528846905249, -0.3412131452444802, -0.15729499384376586, 0.7401055317297539, -1.5006289832915671, 0.13090767568871237, -0.37272686872380556, 0.6370798781282889, -0.33667335330587517, 0.5508130036005932, -0.4176674376320644, -0.1442216731275609, -1.0288483850076697, -0.04725689571527415, 0.6061425281688448, -0.26582812921124604, -0.34010816358942053, 0.6740955997168462, -0.14153986785434847, -0.4746644753735187, 0.06934473290581603, 0.00014184921564734665, 0.4433300034159752],
                          [0.08419707796852648, -0.3314780915307308, -0.5748777413971959, 0.5582140861395108, -0.00771133694632169, -0.5624791612969371, -0.6393558368233327, -0.40183976093129536, -0.08292280339767255, 0.20319471472109374, 0.1627920682833453, -0.30801587220003646, -0.5770041704285909, -0.7735049322123501, 0.46182980542289415, -0.5250504125375844, 0.33806078139556, -0.03377008172498841, 0.41281565364577233, 0.1673081250170544, 0.18663200040080657, -0.2619323744164921, 0.35228362288863574, -1.1778287360994388, 0.006762231985964498, -0.7460690295791756, -0.5899610518113729, -0.589398749856204, 0.5215467417902745, -0.4720957938921199],
                          [-0.931199005996854, 0.43277972981622004, -0.6788644747795615, -0.18769300919624224, 0.9225276939240815, -0.2492459271661735, 1.2561591206849212, 0.017013643162545916, 0.004329514934235869, 0.18705846081209077, -0.043203736666849755, 0.6081602203988467, -0.3117414351751388, -0.12080026150693676, -0.20085128126327123, -0.3495641693767574, -0.2617431378699667, -1.0742483229978674, -0.31149570727587006, -0.2049854923084885, 0.412238149142494, -0.09172510483652617, -9.379873505933889e-05, 0.2851107181556532, 0.04338034859583835, -1.0063737694040293, 0.07775418686371369, -0.36254146913912216, -0.5520777213772112, -0.3733820589476754],
                          [0.04116705063387595, -0.24425211387516635, 0.868177624936142, -0.6310643735648179, 0.6965422027113577, 0.40319728431999535, -1.0508692395121153, -0.20790409002778718, 0.32719278565624244, 0.573022016022216, -0.1386032997236148, -0.01693461916220912, -0.4045826507260844, -0.09919495365883366, 0.4564017588058512, 0.8900608375745283, -0.6118728617372957, 0.13113611503760472, -1.1100834310585534, -0.3459208220777488, -0.30042198432214434, 0.18991392015661507, -0.12291308082799066, -0.16891773536567184, 0.09902588442792665, -0.1295197016468267, 0.7799472999406502, -0.2589849200518236, -0.2705059566437447, -0.041066080450706505],
                          [0.06364293256789, -0.029462535446426047, -0.43772044622958267, -0.3771028741371682, -0.19824965325213048, -0.26796733841199005, 0.14799726274422473, -0.5091895974909051, -0.8310202978017072, -0.2993304957719206, -0.3525293201505264, -0.47513281224425963, 0.2773403104635961, 0.005756957893099445, 0.7089630701153238, -0.04874928997518104, 0.28860260664614024, 0.09587941102473566, -0.4337145058932092, -0.1576319633091992, -0.6596716147693944, -0.4045145460914585, 0.3059928841445649, -0.050113121531001566, 0.10969143426704225, 0.30054854913719564, 1.047377155881221, 0.2154051997932506, 0.05567285281411036, -0.673115503345183],
                          [-0.2446941577971199, 0.106801747558545, 0.5177811430675091, -0.7425229033260294, 0.08758867199750504, 0.1488061243987806, 0.16402967563046653, 0.5419463641830184, 0.7326939633320102, 0.027811516346864403, 0.011000864954076438, -0.32341278575120824, 0.2897436489179927, -0.12186786919688203, -0.6324240007689849, -0.09420751707073916, -0.4826010926339242, 0.565034246460138, 0.44977967161758536, -0.5184709981086193, -0.04829432448780157, -0.0304127641931348, -0.1939220555449293, 0.1293952584865357, 1.0007001700968348, -0.644818117165531, -0.24188732014255082, -0.08002082361010655, 0.08083068399885046, 0.5675133480218297],
                          [-0.04064469007650939, -0.8053740565771232, 0.06269135922206256, -0.16980811851286837, -0.3231364263252641, 0.8015624492193028, 0.6080184848683853, -0.44126427156650444, 0.2524892845855758, 0.0827563726106704, 0.6239258604598814, 0.0832768086476268, 0.25416569089101493, -0.0869651286872917, 0.5578373622386232, 0.4751502036558199, 0.1535095715398947, -0.109541964830443, -0.35704762816262214, -1.0162460336743973, 1.1701009734426944, 0.053127030907076905, -0.1743631787913957, 0.23589406161222792, 1.4550702556977255, 0.17956079554205673, -0.18126194795380912, -0.35973459359790766, -0.42567330831406897, 0.1407599647811832],
                          [-0.4231030504583378, 1.3993791734006384, -0.2974867876655841, 0.15602781829287796, 0.29199620055090375, 0.6858788413037628, -0.16350822491602326, -0.3550392847780144, 0.33905640188520225, -0.21439719070100224, 0.3079795587172005, 0.5687468450030202, -0.005316770326502202, -0.7585241434126971, 0.4545479908160448, 0.7891296191404112, -0.2754348270399245, 0.254161382530106, -0.14951441180599565, 0.6424193617583918, -0.5081042102635959, 0.1780925717035237, 0.47903610264167507, -0.2953055281360557, 0.3634409958852889, 0.6295044167232462, 0.14806437233862593, 0.2591894360442388, -0.7264873881286057, 0.38278716069019314],
                          [0.3921856376731301, 0.3017296264325326, -0.08937841704803298, -0.33128521745664474, 0.7075639990998909, 0.6524794994457755, -0.3556210203445219, 0.3915628693526461, -0.4060738297958019, 0.2623372115106654, -0.6226757627498926, -0.686829509408306, -0.8802850053493994, 0.0891112829587712, -0.368448384696812, 0.40038493018851656, -0.5686153365648299, -0.7330852401360398, -0.8171702320310947, 0.4262549255179605, -0.054719377308353336, 0.3733440317259621, -0.0034952930501937624, 0.6310827664020321, 0.39341772826956545, 0.7843883618126585, -0.5528061449161896, -0.7256171706424286, 1.2888700744945383, 0.1619270450131655],
                          [0.2550723175369013, -0.28724568573356946, -0.006174842350617299, 0.012864444322135571, 0.24471340126827526, 0.45123251816548665, 0.3652990125826973, -0.5631916381032893, 0.3067845475760742, 0.29658312359131167, -0.22885718615661893, 0.3757514854834658, 0.7064767555106136, -0.5348913902315591, 0.2979528592573472, 0.4979861846667213, -0.1035696209638984, -0.7355431110717402, -1.1668152496168631, -0.15749648875652353, 0.5150036159505347, 0.3642258119005273, 0.027052424742704917, -0.2753461499806025, 0.2786051523968783, -0.6492345136837528, -0.05729164898573211, 0.7817979032165872, 0.3088327898252882, 0.767521393507543],
                          [-0.7203579536098543, 0.12186760463050267, 0.6993165883356993, 0.25470286360719924, 0.07156037889248763, 0.5083236268538709, -0.7738843723158384, -0.8706267296971979, -0.2997035074548644, -0.1646895384064018, 0.2318690664960127, -0.300834802890036, 0.14743182359894935, 0.3398984557528355, 0.16568236949094028, 0.053229818872275306, 0.48674262643751776, -0.2025190794921917, 0.6839931409948092, 0.8778118040515414, 0.012419916881345049, 0.585798656306177, -0.6983453607754033, 0.2625647706455376, -0.5724090617650777, -0.2929380226445725, -0.6314847989197571, -0.3433025839911423, 0.6251478033818892, -0.06194723002124032],
                          [0.48494634843398743, -1.0646641154737155, -0.3162425757708595, 0.6599352254560598, 0.27911403881285113, -0.6383838192620968, 0.10451100176490347, -0.6300073511955803, -0.07816628738603076, 0.17361435117137894, 0.5116148182745501, -0.1799805841887142, -0.34195261491435486, 0.1361304235158068, 0.6363577531380599, 0.46254787581617707, -0.39831779952313334, -0.5021469245000705, 0.07294492797704483, 0.5205235336992341, -0.10450885208855465, 0.052059739437135814, -0.2350561490106614, -0.2517601437397039, 0.29275707838129317, -0.4409220071562644, -0.41161368768391854, -0.38709462245053244, -0.6485935288927744, 0.2291863966962973],
                          [0.44300444268054223, -0.03421267135612949, -0.7968740372230199, -0.2948702246276172, 0.33819048231434223, -0.45248335923393934, 0.0002829197632219019, 0.4559788937173712, 0.1115694082096472, 0.01740552441265769, 0.5874992458516929, 0.2635337857730487, -0.09293931815122562, 0.5520651770187974, 0.39362461781370917, 0.7172616178908198, 1.2713997332235305, -0.7345751921321013, 0.9308900908704225, 0.7152942154835733, 0.04501525040916676, 0.18001372272860333, -0.5112250025957518, -0.6931834769358324, 0.007719485547783567, -0.022186014617412653, 0.5222714167490485, -0.491943461735535, 0.3329814936821886, -0.09154425206730374]])

    su=0
    su2=0
    su3=0
    z1=[]
    a=0.5
    b=3.0
    k_max=20
    TWO_PI = 2.0 * numpy.pi
    cos = numpy.cos

    for i in range(0,30):
        z1.append(x[i]-offsets[i])

    z1=numpy.dot(z1,matrix30D)

    for i in range(0,30):
        for k in range(0,21):
            su2=su2+ (a**k)*cos(TWO_PI*(b**k)*(z1[i] + 0.5))

    for j in range(0,21):
        su3=su3+ (a**k)*cos(TWO_PI*(b**k)*0.5)

    s=su2-(30*su3)+bias
    return s

def F12(x):

    bias = -460.0

    alpha = [-2.028, -1.5589, 0.7774, -2.0752, -0.1601, 1.0811, 1.408, -1.6129,
             2.419, 2.217, 0.5244, 0.7151, 1.7674, 2.0937, 1.5349, 0.0433,
             -1.9471, -2.786, -0.1282, 1.2721, -0.1741, -0.012, 1.683, -1.7042,
             2.9255, -0.1696, 2.2797, -0.8142, 1.5232, -0.2444, -1.5589,
             -1.7701, -0.3173, 0.0825, 0.4034, -1.1047, -2.7235, 0.8031,
             -0.2834, -0.6032, -1.6169, 1.5346, 2.7228, -2.5399, -1.4283,
             -0.5822, 0.7624, -2.2955, 1.6961, -2.5261, -1.6655, 1.8325,
             2.4668, 2.3259, -0.1323, -2.6112, -2.3339, -2.3877, 2.598, 0.8058,
             1.4093, -1.2263, 2.8888, 1.1118, 0.7998, -2.0294, 1.2477, 1.1918,
             0.4183, -1.0449, 1.7843, -2.0655, 2.4799, -1.26, 1.6222, -1.8351,
             0.0099, -2.5411, 2.331, -2.6963, 2.4796, -1.9349, 0.2676, -1.6177,
             2.0879, 0.5869, 2.0894, -1.4914, -0.012, -0.4632, -2.3644, -2.1405,
             1.2302, -0.619, 2.7602, 0.5755, -2.6869, -2.3987, 1.945, 1.7011]

    a = [[79, -66, 21, -94, -60, 68, 92, 63, -5, 90, 5, -43, 64, 59, 59, 47, -2, 37, -41, 52, 30, -18, -51, 94, 13, -73, 41, 65, -55, -97, -57, 16, 77, 40, 45, 17, -20, 91, -46, -92, -27, -17, 85, 84, 56, 63, -5, 51, 2, -44, 70, -88, -39, -94, 29, -1, -10, -59, -92, 17, 96, -50, 12, 95, -56, 47, -55, -45, -46, 8, 71, 51, 51, -36, -73, -72, 59, -79, -93, 67, -17, 83, -56, 28, 94, -20, -83, -87, 56, -96, -52, 54, 13, 24, 27, 74, 86, -24, 11, 79],
         [-18, -48, -15, -67, 63, 42, -75, -59, 0, 30, 55, -18, -80, 0, 78, 80, 9, -25, 95, -23, -84, -30, -31, 72, -24, -39, 63, -15, -24, -9, 60, -97, -72, 75, 67, 47, 75, -87, 66, -13, -64, -8, 97, -50, -47, -85, 67, 84, 14, 80, 10, 53, 21, 56, -1, 7, 4, -69, -27, -76, -4, -30, 29, -46, -88, -56, -63, -78, 71, 51, 97, 95, -42, -96, -55, -71, -97, -73, 49, -11, -2, 16, 21, -3, 38, 97, 27, -64, -66, 60, -54, -92, 58, 37, 0, -70, 58, -77, 47, 25],
         [-65, 62, -61, 43, 92, 49, -27, -10, 0, -57, -83, 32, -26, -84, 79, 1, 42, 35, -92, 31, -25, 68, 11, -91, -50, 67, -44, -86, 19, -64, -16, -13, -20, 47, -93, -49, 75, -23, -7, -65, 82, -37, -57, 7, -88, 4, 12, -57, 1, -37, -83, -67, 4, 85, 55, 19, 48, 72, -27, -43, 68, 58, -51, -11, -5, 32, -62, -97, 38, 58, -13, 23, -96, -84, 53, 55, -35, -76, -54, 52, 45, -34, -56, 11, 24, -19, -45, -89, -24, -49, -65, -11, -26, 45, 36, 71, 33, -42, -61, -64],
         [-65, -30, 86, -52, 4, -13, 64, -52, 69, -89, 0, 4, 6, 19, 1, -31, 60, 95, -41, -3, 36, -63, -37, 16, 11, -37, -7, 16, 32, -81, 76, 86, 32, 95, -15, -50, 15, 15, 37, 90, -56, 89, -13, -36, 48, 10, 74, 10, 51, -58, -41, -30, 35, -10, -16, -30, -23, -33, 14, -62, 27, 35, 61, 89, -10, 62, 87, -70, 51, -63, -11, 3, -57, -60, -59, 74, -9, 17, -29, 17, 36, 82, -35, -9, 59, 58, -31, 62, 65, 38, 5, 5, -55, 77, -76, -85, -25, 28, 75, 11],
         [23, 59, -17, 22, -98, 51, -35, 76, 24, -94, 15, -32, -48, -52, -70, 35, -25, 70, -92, 28, 54, 94, 66, 72, -34, 14, -45, 54, 49, -42, -48, 80, -74, -91, 48, -33, 60, 22, 77, -84, -56, 52, -45, 75, -9, 94, 45, 15, -47, 12, -55, 28, -78, 3, -23, -44, 3, -50, 55, -32, -73, -29, -19, 29, -9, 23, -5, 83, 76, 79, 92, 35, 62, 24, -49, 50, 92, -82, 65, 28, -95, 1, 9, -29, -27, -99, -1, 38, -55, -49, -53, 32, -50, -88, 95, 65, 79, 89, 19, 58],
         [87, 5, 63, -18, 97, -9, -53, -77, 46, 78, -80, -30, -5, -17, 40, 5, -48, -10, -51, 22, 58, 75, -65, 15, -33, 41, -51, 67, 99, -28, 67, 53, -66, 81, -91, -17, -32, 23, 60, 51, -28, 92, -96, 25, 38, -82, -64, -84, 61, -22, 65, 66, -69, 55, 35, -45, -23, -19, -78, -79, -69, -34, -77, -90, 54, 63, 47, -70, 65, -54, -53, 11, -20, 25, 11, -16, -70, 68, 84, -22, -33, 78, -98, 93, 5, -36, 59, -24, -42, -42, 15, -7, 88, -35, 12, 14, 23, 54, 76, 39],
         [58, -7, 26, 20, 21, -53, 80, 17, 9, -78, 31, -86, 53, -78, -38, -32, 19, 49, 91, 12, -58, -11, -97, -28, -77, -84, -68, -38, 76, 25, 46, 3, 0, -68, -95, 11, 48, -43, 93, 48, -91, 84, 3, -20, -39, -46, -7, -23, 24, -42, -23, 62, 75, -62, -93, 75, -93, -42, -79, 33, -51, -37, -34, -80, -53, -54, 8, 5, -75, 51, -85, -40, -89, -56, 61, 23, 15, 66, -48, -57, -43, -77, -49, 66, -54, 24, 61, -47, -75, -79, 58, -20, 26, -68, 26, -74, 86, 58, 10, 18],
         [37, -73, -44, 47, -14, -73, -2, 3, -98, 46, -95, -42, -89, -83, -24, 92, -13, -22, 22, 54, -19, -83, 13, -12, -38, -100, 92, 49, -59, 52, -15, -2, 36, 53, 2, -79, 10, -49, 82, 97, -35, -17, -77, 71, -86, -2, 13, -10, -28, 14, 15, -95, 21, -4, -15, 73, -85, -64, -57, -80, -62, -71, 86, -96, -94, -95, 56, 61, -83, -60, -79, -31, 63, -4, -8, -89, -40, -69, 26, 33, 74, 77, 76, 38, -27, -16, 52, -47, 63, -63, 87, 53, 2, 93, 55, 24, -19, -85, -76, -33],
         [5, -2, -5, 63, 65, 97, -28, -23, -26, -59, 53, 13, 87, 72, 54, 42, -85, 97, -13, 58, 14, 41, 30, -60, -2, -71, 95, 34, -33, 26, -39, 50, -28, -12, -11, 45, -35, 71, -71, -94, 50, 31, -10, 7, -17, -41, -80, -77, -43, -32, 20, -40, -89, -58, 61, 70, -19, 3, -5, -46, 22, 63, 30, -33, 66, -52, -40, -67, 14, 93, -35, -25, 4, -51, 35, 17, 68, -26, -94, -74, -60, -74, 74, -3, -76, 11, -32, 68, -47, 30, 77, -9, 10, 10, 70, 59, -39, 97, 27, -68],
         [-85, -51, -71, 94, -58, 89, -19, -80, -12, 29, 46, 58, 68, -85, 31, 45, 50, -77, 13, -79, 66, 33, 26, 70, 25, 41, 49, -72, -33, 86, 61, -34, 72, -28, 20, -31, 5, 12, 85, -56, 42, 94, -53, 73, 11, -43, -94, -12, 21, -29, 14, -42, 10, -80, -77, -80, -45, 85, -96, -77, -89, 44, -26, -40, 28, -56, 60, 93, 90, -2, -68, 29, 83, -53, -64, 74, -61, 45, 32, 70, 73, -72, -9, -63, 30, -51, 57, -23, -53, 64, -57, 34, 95, 70, 16, 58, -69, 74, -47, -78],
         [-76, 41, -75, 25, 58, 20, -35, 24, 31, 0, 95, -57, -44, -60, -9, -22, -71, -19, -71, 41, -97, 96, -15, -98, -78, -46, -44, -72, 53, 61, -47, -72, 34, -46, 43, 43, 58, -60, 51, -76, -63, -57, 15, 10, 84, -53, 3, 26, -31, -65, -93, -2, -33, 84, -56, 88, 88, -34, -87, -24, -28, 94, -70, -64, 100, 61, -78, -93, -75, -32, -57, -87, 56, -13, 95, -93, -6, 25, 5, -45, 48, 20, 72, -57, 45, -92, -86, -20, 6, 17, -90, -82, -98, 98, 75, -57, -65, 4, 85, 15],
         [-30, 21, 35, 91, -94, 36, 25, -75, 75, -90, 69, -88, 72, -82, -56, -11, -73, -25, -18, 64, -75, -29, -42, 71, 2, 67, -90, 63, 63, -66, 3, -54, 91, 62, 67, -94, -15, -97, -45, -80, -80, 18, 36, 17, 38, 27, 64, -17, 65, 34, -89, 70, 45, 30, -72, 44, -83, 69, -14, -52, 70, 78, 49, 66, 20, 62, -80, -5, 58, -57, 81, 16, -93, 81, -32, -50, 39, 40, 42, 65, 91, 58, 59, -60, -99, -58, 33, 73, 98, 46, -54, 60, 45, -65, 88, 3, 92, -63, -92, -2],
         [-92, -13, 67, 44, -16, 10, 34, -64, 55, 30, 89, -12, -31, -60, -68, 75, -30, -31, -1, 26, -7, -53, 13, -88, -69, 34, 52, -98, 31, -18, 82, 15, -99, 59, -59, -86, 25, 10, 73, 24, 74, 2, 66, -7, 52, 79, -12, 13, -63, -69, 65, -99, -73, 30, 84, 20, 77, 62, 9, -34, 88, 21, 66, 87, 80, -74, 2, -60, -8, -22, 83, -62, 72, -29, 37, 5, 18, 88, 32, 98, -77, -24, -82, 76, -67, 17, 30, 65, -78, 58, -31, 15, 36, -8, 47, 49, 55, 41, 12, 24],
         [95, -69, -1, 21, 30, -35, 83, -52, 18, -81, -94, -51, 35, -70, 39, -1, 73, -55, 21, 48, 30, 4, -33, 5, 97, 73, 90, 1, 55, -64, 67, 80, -72, 77, 68, 59, -59, -89, -80, 67, -12, 57, 64, -37, 62, 90, 71, 65, 53, 40, 0, -75, 6, 66, 18, 30, 79, -77, -48, 62, 91, 14, -13, 97, -39, 52, -10, -79, 65, -96, 1, 55, -20, -46, 90, 55, -2, 10, 70, 21, -61, -60, 7, -91, -66, -79, -26, -85, 15, -97, 73, -84, -77, -59, -44, 7, -12, -23, -84, 18],
         [-93, -55, -38, -15, 50, 25, -94, 80, 45, 38, -59, 47, 95, 42, -81, 59, -38, -24, -77, 93, 42, 44, 39, 76, 57, -99, 85, 17, 10, -69, -91, 70, 31, -51, 15, -6, -85, -47, -38, -82, -54, -15, 62, -68, -34, -35, 37, 32, 45, -94, -58, -19, 74, 3, -4, 33, -61, -58, 58, -53, -35, -42, 88, 20, -14, 63, 23, -79, -23, 50, 67, -31, -63, -8, 63, 55, 87, 56, -18, -82, -95, -67, -62, -46, -76, 45, -34, 14, -25, 16, 84, 23, -10, 11, -93, -4, 68, -4, 50, -97],
         [54, 38, 80, -43, -86, -45, -97, 45, -98, -30, -29, 33, 72, -13, 34, 24, 16, -53, 31, -49, -63, -2, -51, 65, 3, 2, -51, 42, 48, 94, -55, -7, -2, -94, 64, -6, 100, -76, -27, 0, 75, -91, -43, -22, 100, -13, 11, 41, -2, -15, 91, -1, 78, -85, 69, -58, -39, 64, -29, 91, -83, 97, -56, 13, -54, 27, 32, -41, -14, 83, 46, -1, 69, 42, 79, 10, 17, -41, -72, -89, -32, -36, 72, 59, 21, -73, -78, 42, -86, -5, -53, 17, 51, 72, -48, -76, -48, -59, -49, 35],
         [26, 80, 15, -96, -19, 83, -17, -12, 71, -49, 29, -69, 85, -88, -11, 54, -77, 81, 44, 76, 60, -74, 22, -81, 26, -94, -46, -50, -21, 87, -71, -92, 0, 37, 13, 85, 82, 34, 17, -54, -59, 8, -43, 72, -12, 6, -96, -72, -66, 84, 38, -17, 92, 34, -77, 77, -69, 9, -25, 25, 9, -85, -19, -4, 75, -16, -65, 18, -86, -65, 10, -31, -58, -66, -54, 85, -99, 46, -13, 17, 42, 56, -42, -96, -34, 89, -27, -14, -40, 65, 40, -30, -72, -39, 86, -80, -26, -92, 19, -49],
         [6, -73, -63, -94, 96, 28, -8, 41, 52, -75, -80, -58, 93, -19, -10, -44, -84, 86, 55, -32, 36, 47, 39, 86, 35, -60, -51, 74, -84, -8, -19, -48, -21, 58, -12, -33, -7, -47, -38, -62, -20, -53, -87, -94, 68, -83, 100, -90, 81, 92, 34, -47, -50, 36, -77, -68, -83, -55, 73, 49, 5, 13, 18, 51, -49, 64, 34, -76, 82, -63, -74, -8, -32, 13, 10, -98, 81, -40, -65, -89, -81, -20, -39, -11, -95, -9, 48, 17, -29, -45, 73, 97, 61, 88, -95, -84, 69, 98, 32, -67],
         [-40, -15, 96, -73, -78, -21, 32, -31, -34, -43, 76, -14, -78, 11, -22, 14, -4, 57, -65, 75, 55, 31, 7, -36, 86, 99, 5, 64, -67, -40, 10, 29, 26, 77, 10, 18, 90, -30, 45, 73, 72, 52, -47, 2, -42, -16, -79, 78, -15, -94, 95, -2, 98, 70, 69, 56, -18, 95, 49, 75, 12, -23, -19, -62, -59, 17, -44, 47, 62, -60, 78, -3, 87, -31, -5, 69, -77, -46, 62, 50, 13, -2, 7, 43, -76, 4, 31, 21, -51, 52, -59, 83, -17, 43, -97, -52, 80, -75, -33, 93],
         [-82, 30, -8, 78, 44, 42, -41, -17, 5, 82, 1, 72, 75, -35, -93, -38, 17, 13, -98, 92, -30, 76, -31, 71, -56, 21, 54, 68, -6, 17, -66, 75, 97, 89, 90, 60, 54, -2, 43, 85, 71, -34, 63, -24, 8, 34, 2, 12, -84, -53, 8, -10, -59, 3, 79, 33, 26, 84, 56, -13, -69, 16, -13, -2, -77, 90, 32, 91, 55, -97, -13, -80, 65, 81, -98, -12, -47, 52, 97, 52, 90, 63, -23, 68, -4, 28, 17, 20, 43, -63, 80, -33, 62, 26, -1, 12, -52, -87, 100, 82],
         [20, 21, -36, -5, 46, 16, 50, -7, 82, 10, -99, 45, 73, -72, 73, -36, -75, -84, 58, 10, -21, 80, -24, -27, -1, 90, 73, 6, 56, -72, -6, -99, -89, 47, -2, 8, 36, -13, -91, 86, -77, -57, 33, -7, 47, 3, 41, -94, 46, 55, -88, -43, -82, -3, -80, -99, -93, -25, 12, 52, -86, 18, 65, 90, 92, 86, -15, -32, -25, -88, -6, -10, -96, -68, 46, -91, -45, -37, 39, 66, -38, 32, 21, 46, -56, 33, 45, 40, 75, 57, 38, 27, -67, -80, -28, -20, 52, 51, 48, 3],
         [-64, 78, 65, 59, -80, 39, -68, 50, -36, 6, 49, 70, 41, 45, 94, 54, 79, -72, -5, 37, -44, 14, -53, -57, 64, 41, 44, -69, 63, 9, 23, -59, -9, -48, 62, -11, -57, -29, -71, 20, 80, -3, 100, 33, 56, 50, 36, -36, -55, 82, -90, 9, 79, 47, -86, -38, -63, 57, -29, 62, 53, -69, 1, -78, 10, -71, -92, -72, 63, -33, -10, 40, 18, 40, -46, 85, 75, 91, 35, 66, -32, 58, 65, 85, -72, 62, -93, 12, -88, 65, 57, -27, -48, 18, -62, -82, -58, 76, 88, -77],
         [-77, 61, 65, -55, 57, -3, -7, -8, -90, 5, -9, -56, -21, -51, 65, 17, -72, -23, 84, -53, -72, 14, 91, 83, -8, -50, -92, -63, -51, 6, -79, -93, -2, -64, -30, 98, -66, -4, 12, -31, 42, 62, -42, -60, 87, 85, -64, 31, -35, 69, 65, -62, -39, 30, -85, 73, -42, -56, 52, -71, -97, 97, 66, 63, 43, -77, -18, -43, -21, -65, 3, -69, -92, 49, -28, 78, 19, -23, 29, -29, 78, -17, -16, -92, 15, 5, -37, -45, 78, -26, -53, 62, -96, -63, 81, 7, 12, 30, 85, 52],
         [-23, -19, 47, -30, 76, -25, 72, 88, 65, 17, 23, 87, -70, 6, 29, -49, -14, 79, 79, 35, -66, -99, -16, -84, 23, -67, -71, -25, 85, -46, -81, 26, 41, 96, 83, -8, -91, 72, -3, 40, 100, 85, 29, -47, -97, 36, -74, -87, 76, -39, -47, 35, 10, -100, -18, -98, 53, 16, 42, 49, 19, -6, 86, -62, 18, -21, -10, 89, -14, -30, 56, 61, -15, 80, -7, 37, -25, -61, 12, 48, -76, -7, -16, 17, -84, 39, -92, -19, -67, -20, -71, 78, -37, 68, -39, -45, 26, 52, -72, -94],
         [-42, -42, -10, -96, -91, -54, -39, -49, 64, 1, 66, 13, 7, 53, 94, -91, 85, -81, 17, 51, 16, 7, -81, 89, 16, -5, 10, -10, -63, -58, 68, -44, 99, 58, 71, -21, 35, 92, -85, -61, -64, 97, -6, 86, 56, 47, 60, 47, -28, -51, 88, 25, -32, -35, -24, -97, -81, 32, -21, 59, -24, -73, 31, 46, -69, -2, 49, -56, -98, -12, 74, -84, 90, 59, 45, -87, -61, -19, -93, 76, 51, 76, -63, 87, -11, 8, -80, 54, -83, 9, 25, -79, -92, 18, 37, 99, -32, 53, -37, 88],
         [87, 52, 15, -85, 53, -45, 30, -11, 17, -99, 80, -56, 65, 70, -45, -56, -73, 51, 93, 5, -44, -56, -30, -1, -69, 27, -25, -25, 81, 29, 66, -24, -58, 71, 77, -74, 63, 97, -58, -26, -27, 26, 90, 46, -36, 58, 50, 83, -60, 28, 83, 37, -90, 36, 95, 54, -43, 40, -4, -33, -18, -59, -28, 62, 93, -69, 44, -75, -64, -22, 65, 69, 14, -36, -90, 37, -76, 41, -16, -31, -8, -92, -86, 77, 13, 34, -5, -48, -34, -87, -60, -63, -24, 52, 50, 99, -78, -61, -95, 8],
         [34, 67, -33, 51, 98, 34, -36, 67, -84, 86, -66, 4, 16, 52, 79, 41, 84, -19, 32, -64, -78, -76, 68, 79, 96, -78, 6, -31, -21, 79, -83, 82, -41, -60, -100, 17, 91, -96, -94, 32, -6, -36, 10, -53, -10, -96, 18, 1, -49, 12, 98, 65, -25, 96, 8, 66, 97, -58, 70, -16, -9, 6, -18, 38, 51, 19, -35, 10, -22, -39, 84, 47, 46, -1, 76, 65, -6, -25, 41, -9, -84, -24, -10, 79, 29, 99, 37, 61, -31, -54, -74, 42, 20, 80, 50, -24, -73, -47, 42, -1],
         [-16, 66, 13, -26, 85, -30, -43, -74, 61, 31, -2, -32, 60, 62, 76, 46, -34, -38, -20, 41, 81, 20, 84, 35, -70, 16, -4, 9, -41, 27, -95, 57, -11, -96, -42, 28, -63, -6, 15, -7, -13, 31, 74, 53, 35, -21, -25, 51, 61, -60, -91, -10, -51, -82, 66, 12, 92, 13, -14, 51, -52, -76, 17, 64, 64, 41, 83, -71, -78, 74, -1, 72, 2, 86, 49, -14, -10, -61, -72, -30, 49, 51, 77, -79, -98, 21, 27, 79, -58, -10, -92, -17, 4, 69, 45, -9, 65, 77, 14, 64],
         [-65, -34, -65, 48, 81, -12, -54, -70, 63, 1, 15, 2, -27, -23, 58, 75, -54, -41, 15, 61, 93, 40, -65, 48, -70, 18, 49, 50, 65, -7, 3, -97, 7, -51, 78, 14, -22, -24, 88, 66, -90, -18, 38, 77, -58, 14, -53, -22, 70, 45, -79, 76, 68, -61, 76, -89, -57, -7, -78, -9, -27, 42, 96, 11, 4, -35, -82, 5, -47, -44, -8, -16, 12, -69, 18, 2, 53, 79, 82, -8, -17, -13, -21, 6, 61, -34, -30, -8, -63, 80, 52, -35, -9, 44, 81, 83, 94, 52, 35, -41],
         [94, -22, 35, -74, 69, 22, 88, 4, -97, -99, -98, -48, -60, -48, 53, -9, -56, -92, 55, 30, -8, 44, -92, 43, -45, 68, 90, 1, -3, -72, -92, -89, 41, 80, -30, -88, 99, 42, -57, -87, 5, 55, 77, -94, 23, -59, 45, 61, 24, 58, 70, -57, 77, 85, 83, 82, -72, 2, 72, -22, -98, -7, 6, -22, 99, -96, 99, -88, 89, -39, 41, -1, -5, 10, 30, -92, 50, -60, -95, -83, -27, 3, -86, 7, -74, -91, 25, 31, -76, -89, 50, -63, -32, 5, -12, -26, 17, -36, 83, 1],
         [-19, 78, 60, -93, 50, 97, 2, -97, 71, -48, -2, 5, -70, 7, 77, 45, -35, -99, 11, -12, -92, 100, -9, -41, -95, -33, -30, -47, 36, -53, -94, -31, -52, -53, -14, 84, -57, 19, -58, -21, 75, 2, -73, -54, -46, 57, -72, -98, 55, 43, -9, -95, 81, -6, -21, -64, -61, -12, -89, -37, -97, 93, 87, 91, 93, -92, 99, 62, 49, 80, -79, -27, -49, -61, -53, -97, 16, 63, -24, 91, -90, -3, -10, -61, -42, 27, -63, -89, -47, 71, 3, -23, -7, 68, 11, -92, -88, -67, 44, 45],
         [-6, -73, -75, 99, 48, 89, -69, 92, -71, 13, -67, -43, -52, -81, 76, 57, 97, -50, 20, 49, -13, -54, -24, -52, 32, 96, -53, 73, 39, -29, 15, -90, -40, 24, -55, -70, 14, 29, 91, 99, -15, 2, 78, 74, -21, 20, 60, 35, 58, -1, 7, 74, -90, 30, -28, -11, -14, -4, -76, 66, 79, -13, 62, 94, 71, -78, -27, 14, 15, -80, -8, -14, 47, 92, 62, 83, 38, -30, 6, -61, 48, 68, 14, -42, -80, 26, 28, 97, 55, 68, -11, 18, 20, 70, 61, -91, 20, -87, -79, -43],
         [-90, -92, 85, -94, -31, -16, -15, -54, -94, -86, 37, 26, 88, 90, -41, 17, 98, 88, 39, 56, 24, -97, -59, -13, -55, -95, -49, -99, -67, 28, 19, -97, 31, -82, -66, -41, 0, 28, -38, -4, 95, 2, 94, -28, 30, 10, -44, 73, 62, -49, -84, 62, 50, 5, 37, 24, 86, -87, 23, 66, 86, 43, 71, 70, 37, 82, 36, -81, 80, 23, -92, -25, 89, -13, 91, 19, -19, 35, 37, 14, 25, -72, 18, 14, 27, -20, -69, -27, -16, -42, 74, -4, 17, 61, -46, 64, 83, -19, 39, -69],
         [94, 47, -69, 42, -2, 51, -18, -100, 94, 3, -17, 70, 45, 99, -21, 61, 82, 0, 33, -95, -52, -67, -62, 29, 58, 59, -23, 30, 37, 97, -95, 23, -95, -59, 13, 71, -29, 40, -35, -76, 39, 37, 63, 9, -16, 3, -46, -99, -18, -59, 30, -57, 25, -41, -97, 88, -86, -46, -40, -21, 46, 31, -16, 57, -38, 11, -84, -53, 31, 14, -51, -7, 21, 7, 91, 44, 21, -89, -51, -38, -99, 18, 19, -90, 60, -95, -23, 51, 14, 47, 66, 75, -9, -3, -48, 2, -28, -52, -63, -81],
         [-24, 96, 57, 85, 71, -51, -90, 37, -96, 9, -44, 30, -10, -80, -40, 49, 18, -59, -89, 97, 67, 15, 34, -51, 4, -74, 61, 47, 8, -77, 37, 85, 58, -11, -36, 18, -73, -80, 73, 69, -63, 86, -50, -25, 52, -47, 90, -64, -63, 72, -97, -70, 47, -71, 29, 70, -9, -96, -30, -80, 39, 83, -97, 16, 61, -90, 35, 97, -63, 46, 37, 82, -72, -57, -64, 12, 12, -64, -51, 29, -92, 5, -34, -60, 46, -45, 6, -79, 95, -53, 32, 10, -68, -45, 69, -80, -31, 90, 87, 42],
         [1, -82, -74, -47, 73, 97, -29, -26, -68, -22, 78, -67, 38, 94, -77, 30, -34, -82, -64, -100, -13, -37, 56, 71, 8, -91, -46, 58, -50, -23, 62, 55, 64, 84, -10, 21, 88, 92, -95, 92, -3, 82, -87, 89, 52, -27, -86, 86, -65, 13, 10, -77, 67, 30, 91, -62, -3, 72, -32, -68, 44, 12, 3, 28, 57, -54, -91, 39, 34, 34, -17, -13, 10, -23, -1, -95, -7, 79, 7, 92, 2, -32, 35, -36, 46, 48, 76, -23, 80, 3, -40, -40, -30, -88, 24, 24, -75, 91, 82, 41],
         [-10, -14, -69, -7, 32, 45, 31, -36, 92, -30, 71, -95, -94, 23, 100, -76, -61, -95, -84, 86, -81, -78, 78, -52, -71, 35, 78, -59, 87, -31, 21, -93, 90, -14, -98, 12, 2, 55, -51, 42, -65, -49, -89, -77, -86, -27, 17, -71, 45, 88, -60, 0, -18, -1, -42, 17, 33, 76, -38, 2, -20, -10, 51, -52, -61, -89, -99, -73, -93, 46, 58, -62, 40, 34, 66, -57, -85, 16, -31, -73, -42, 71, 15, 79, 74, 17, 10, 69, 8, 36, -40, -24, -80, -27, 50, -52, -45, 52, 57, -41],
         [77, -76, -22, -50, -90, 47, -92, 62, 70, -43, 33, -95, 85, 53, -86, 89, 32, -19, 20, 52, -25, 87, 43, -33, -91, 87, -78, -62, 98, 30, -2, -80, -7, -29, 57, 95, -94, -47, -42, -54, -43, 82, 61, 72, 98, -24, 4, -89, 23, 30, 13, -10, 58, 87, -28, 21, 36, -29, -56, 24, 77, -16, -80, 53, 36, -5, 28, -57, -78, -88, 48, 40, 78, 38, -9, 63, 71, 43, 55, 6, 29, -23, -25, 29, -95, 95, -6, -73, 18, -51, -64, -96, -38, 26, -57, 90, 89, -45, -21, 23],
         [-86, 17, 16, 70, 41, -63, 7, 27, -41, 66, -26, 39, 26, 6, -43, -47, -30, -95, -25, -24, 23, 2, -66, 4, 81, -19, 50, -46, 35, -34, -43, -32, -28, 23, -65, -40, -51, -99, 82, 67, 0, 17, 88, -19, 41, -13, 89, 66, 69, -52, -20, -98, -42, 50, 24, 35, 98, -50, 76, -85, 19, 24, -40, 87, 32, -51, -36, -32, 96, -64, 77, 72, 64, 28, -20, 91, 28, 25, 16, 6, 83, 39, 52, -44, 38, -16, -11, 19, -37, 96, -99, -5, -66, -37, -57, -12, 71, -37, 17, -78],
         [-67, -40, -23, -17, -46, 16, -8, -97, -80, -92, 17, -53, 6, -48, 80, 20, -87, 41, 11, -77, -76, 81, -23, 15, -96, 29, 28, 14, 2, -38, -45, 52, -28, -62, -73, 11, -2, -23, -67, 15, 100, 73, -86, -8, -67, 37, 77, -92, 59, 15, -78, -1, -90, -71, -81, -65, -75, -75, -24, 95, 93, 57, 22, 53, -13, -3, -66, -79, 13, -26, 80, 58, -85, -81, 39, 50, 93, 11, 80, 42, 25, -30, 45, -49, 34, -22, -14, 75, -83, -50, 56, 7, -97, -43, -91, 28, 88, -96, -74, -52],
         [85, -66, 99, 10, 13, 61, 35, 62, -63, 47, 44, 100, 25, -69, 98, 91, -66, -2, 59, 8, -11, 44, 12, 73, 23, 82, 14, -80, -76, -51, 70, -10, -34, -15, -89, 53, -54, -11, 50, -6, 72, 14, 86, -62, -37, 57, -1, 33, -90, 68, -39, -10, -39, 54, 12, -40, 67, -71, 41, 15, -40, 54, -51, -4, -12, 95, 57, 41, 49, -22, 68, 26, -20, 74, -96, 63, 86, 62, 85, 43, -75, -7, 5, -30, -27, -67, -94, -56, 89, 90, 1, -33, -65, -29, -22, -85, -34, 82, 74, 2],
         [6, -30, -38, 26, 63, 12, 84, 96, -40, -15, 79, -18, -2, -42, 8, 32, 34, 85, 59, 82, -41, -10, -37, 57, 36, 4, 47, 67, 78, 41, -99, -4, -3, 68, -19, 92, 31, 26, 92, -99, 33, -62, -97, 15, -20, 98, -11, -44, -5, 98, -38, 94, 66, 17, -77, 90, 40, -21, 64, -62, 92, 36, 25, -1, 41, 46, 91, 74, -34, 83, 45, -73, -83, -86, -54, -2, 10, -23, 37, 23, -42, 35, 90, 77, -84, -51, -78, 28, 4, -53, -77, -49, 24, 97, -40, -91, -6, 19, 61, 73],
         [41, -77, -96, 87, -40, 15, 53, -24, 69, 66, 7, -97, -9, 5, -68, 20, 99, 34, -90, 25, 25, -41, -73, 70, -77, 26, -86, 65, -94, -17, 52, 91, 86, -68, -27, -52, -11, 43, 28, 66, 12, 16, 89, 4, 74, -67, -18, -33, -70, -32, 69, 31, -40, -56, 16, 95, 45, 47, 72, 18, 95, -81, 5, -97, 75, -15, 86, -88, -7, -3, -3, 40, 93, -50, -12, -10, 18, -22, -60, 71, 17, 56, -23, -21, 42, 92, -71, -40, -43, 13, -11, -16, 47, -18, -27, 75, 60, 39, -37, 61],
         [57, -6, 25, 53, 97, 14, 15, 57, 40, -77, -6, -22, 67, -89, -43, 75, 7, -44, -29, -97, 17, -89, 49, -89, -11, 91, 63, -49, -82, 99, 69, -99, 81, -95, 43, 36, 42, -58, -1, -2, -65, -95, -33, -97, 68, -14, 62, 76, 39, 95, 93, -60, -17, -76, -23, 1, -55, 30, 79, -26, -56, -28, 45, 52, 27, 23, -59, -94, 38, 52, 31, 59, 36, 98, -42, 73, 11, 64, -17, -8, 37, 8, 70, -24, 65, 74, -54, -2, -56, -50, -17, -14, 75, -47, 2, 16, -95, -86, -28, -79],
         [-5, 26, -40, 59, 9, 15, -73, -53, -72, 59, 98, -45, 48, 41, 52, -51, 73, -58, 4, 60, 51, -37, -27, 42, 21, 2, -74, -20, -60, -16, -36, 29, 5, 61, 71, -100, -89, -53, 0, -90, -48, -48, 90, -34, -77, 9, 80, 56, 63, 23, -32, -6, 11, -81, 34, -29, -9, 74, 35, -78, -2, 19, -89, -72, -43, 93, 71, -95, 91, 91, 96, -54, -28, 21, -47, 54, -44, -11, 73, 77, 34, 76, -3, -36, 77, 47, -56, -22, -95, 36, 38, 55, 11, -13, -35, 39, -19, -19, -88, 76],
         [-63, -27, 78, 92, -42, 56, 68, 87, -89, -16, -27, -1, 94, -97, -86, 100, 4, 6, 22, -74, -48, -24, -33, -8, -79, 54, 13, 78, -46, -24, -96, 54, -90, -17, 81, 96, -43, 54, -13, -35, 88, -89, -83, -98, 72, -52, -68, 0, -92, -68, -83, 43, 98, 3, -37, 25, 60, 34, 0, 58, 62, -8, -79, 21, -55, -61, 76, 29, -100, 50, 67, -99, -75, -14, -55, -91, 91, 16, -44, 99, -62, 2, 20, -19, 80, -9, 99, 32, 70, 38, 45, -78, 5, 88, -32, 10, 31, -97, 14, -40],
         [-52, 65, -70, 22, 40, -6, 29, -11, -76, -5, 44, -83, 84, 32, -18, -4, 28, -55, -92, -98, 100, 43, 54, -2, 94, -14, 99, -80, 53, -36, 58, 12, -76, 88, 97, -69, 76, 17, 66, 47, 47, -29, -64, 74, -91, 85, -100, 65, -91, -37, -61, 64, 92, 11, 66, -87, -34, -33, -1, 53, 70, 20, 54, 33, 58, -80, 18, 28, 24, 30, -25, 46, -3, -34, -72, 10, -31, 6, -47, 99, -39, 53, 42, 62, -5, 26, 31, -39, -77, -96, 70, -5, -53, 74, 68, -77, -28, 63, 76, 21],
         [-95, -41, 6, 60, 41, 72, 60, 50, -43, 67, 23, -38, 6, 3, -63, -90, -87, 94, -33, -73, 2, 83, -69, 55, -59, -66, 91, -65, 58, -59, -28, 87, -44, 74, -77, 39, 7, 39, 16, 52, -53, 37, -57, -65, 23, 78, -41, 56, 75, 27, 17, 90, 88, -11, -32, -51, -65, -40, 47, -55, 40, 64, -98, 3, -10, -8, 43, -13, -68, 27, -65, 94, 80, -23, 82, 86, 91, -74, -97, 16, 80, -38, -84, 64, 94, -48, 79, 12, 55, 90, 81, 99, -59, 44, -9, -95, -36, 77, 35, 39],
         [-82, -41, -28, 82, 44, 89, 90, 22, -78, 39, 69, -81, -30, 69, 27, -73, -8, 16, 75, 61, 48, 92, -39, -79, -14, 82, -21, -91, -56, 97, -53, 54, -36, 49, -3, 96, 31, -34, -88, 94, 36, 11, 15, -51, -27, 63, -16, 59, -40, -73, -78, 98, 33, 23, -67, 85, 50, -13, -92, 37, 56, -30, 60, -84, 60, 55, 47, -97, -56, 93, -32, -32, 81, 7, -81, 60, -2, 20, 86, -41, 31, 40, 85, 21, 22, 40, -13, 79, 31, -92, 20, -98, 51, 38, 74, -77, -82, -21, 81, -25],
         [-4, -44, -4, -94, -78, -35, 47, 41, 89, 58, 43, 96, -12, 40, -69, -72, 8, 91, 36, 58, -94, 2, -64, 38, 93, -25, -80, 27, 81, -93, -14, -93, 24, -51, 22, 17, 49, 89, 47, 48, 70, 39, 3, 96, 35, 47, 37, 47, -36, -4, -64, -79, -23, -13, -16, -91, -19, -61, 1, 96, 36, 32, -77, 18, -98, -12, -50, 25, 39, 75, 90, -24, 70, -59, 44, -99, 8, 41, 66, 11, 47, 24, -61, 36, -88, 76, 41, 31, 70, 95, 30, -22, -5, 88, -32, -77, -82, 11, 30, 51],
         [81, 89, -82, 17, -3, 65, 15, 2, 41, -61, 37, 86, 53, -68, -33, -67, -87, -65, 6, -46, 45, 28, 28, 62, 52, -76, -5, -91, -91, -80, -25, 54, -22, 84, -32, -63, -79, -41, -34, 96, -41, 95, -30, 36, 52, 66, 26, -6, -95, 27, -89, -9, -25, 12, -67, 3, -52, 73, 4, 14, 49, 85, 77, 53, -79, 67, 49, -27, -80, 80, 15, -52, -21, 63, 31, 61, -31, 11, -72, 25, -4, 73, -3, 46, 1, 35, -66, 51, -53, -65, 13, -9, 36, 53, 34, -93, 5, 88, 63, -94],
         [26, 9, 87, -47, -3, 0, -92, 44, -19, -81, -94, -1, 73, 15, -91, 88, -2, 99, -53, -6, -45, 57, -51, 47, -57, 89, 19, 61, 9, -74, 23, -27, 55, -1, -67, -61, 61, 83, -75, 41, 63, 90, 33, -32, -67, 28, -82, -11, -53, 98, -15, 41, 50, 6, 51, -76, -78, -5, 10, 30, -67, -47, -98, -2, -69, -54, 94, 74, 81, -90, 58, 49, 49, -63, -57, 8, -46, -59, -41, -50, 28, -46, -13, 56, -45, -28, -2, -93, -95, 82, -54, 60, 3, -47, -12, -89, -35, -34, 58, 26],
         [22, -60, -14, 61, 88, -48, -79, -26, 41, 1, -2, -44, 36, -57, -48, -26, -94, 57, 42, -77, 26, 14, 75, -35, -6, -54, -48, 69, -23, 77, 94, -80, -29, 45, -37, 76, 43, 86, -36, 54, -22, 91, -53, 16, 78, -20, 42, 26, 10, 27, 19, 84, -74, 26, -94, 18, -54, -18, 59, 8, -97, 34, 60, 41, 10, -27, -83, -30, 13, -89, 67, -66, 52, 18, 81, -97, 18, 75, -49, -16, 94, -73, -29, 35, 87, -28, 14, 12, -60, 59, 95, -62, 55, 10, 24, -84, -71, -14, 17, -99],
         [50, -49, -64, -34, 53, -56, -31, -51, -23, 81, 83, 92, 4, -16, -96, 37, -79, -66, -58, 10, -22, -49, 45, 87, 14, 50, -29, 75, -72, -20, 92, 3, -83, 38, -46, -85, 33, 73, 1, -35, -50, 61, -23, 49, 45, 59, 89, -46, 94, 40, 37, -69, -29, -43, -35, -33, -91, -39, -76, 29, -87, 31, -19, -7, -98, 73, -48, -70, 92, -3, -90, 16, -65, 15, 74, 61, -4, 76, -96, 32, -2, -34, -11, -87, -65, -25, -59, -11, -47, -96, 22, -35, -64, -71, 85, 51, -54, 88, -86, 41],
         [-72, -18, -94, -6, 2, -81, -26, -76, -79, -69, 2, 18, -47, 97, -16, -30, -91, 75, 84, -23, -58, -1, -37, 94, 65, 94, 99, 82, 74, 67, 68, -35, -44, -71, -52, 20, -65, -30, 6, 23, -28, -64, -61, -68, -95, 100, 93, -33, 0, -58, -44, -79, -53, -52, 96, -83, -90, 2, -20, 83, 2, -95, -88, -22, 45, 2, 75, 17, -39, -35, 89, -75, 18, 35, 19, -80, 89, -81, -94, -3, 34, -45, 68, -54, 78, 74, -74, 34, -53, -80, -1, 33, 97, 77, 54, -6, 94, -58, 36, 45],
         [97, -93, -28, 87, -80, 50, 91, -27, 100, -17, -6, 10, -56, 34, 1, 78, -23, 5, -29, -8, 65, -49, 48, 34, -54, -4, -2, 4, -77, -55, 39, 32, 15, 58, 16, 38, 54, 89, 67, 45, -80, 25, 67, -14, 88, 22, -22, -53, -86, -90, 35, 96, -50, 79, 55, 91, 75, 74, 7, -96, 6, 85, 95, 12, -45, -16, -62, -10, -64, -48, -43, -29, -85, 49, 18, -12, 75, -69, 65, -99, 54, 48, -11, 31, 49, 67, 71, -75, -90, -19, 27, 79, -39, 50, -84, 18, -27, -78, -11, 32],
         [99, -3, -4, 58, -81, -80, -68, 58, -64, 16, 53, -93, 39, -68, -16, 96, 54, -76, 34, -95, 97, -46, -1, -59, -74, -77, -44, 96, 47, -8, -50, -13, 60, 34, -46, 27, -2, -45, 42, 54, 85, 37, 28, -31, -34, -47, 94, 16, 95, -90, 19, -87, -87, -45, 99, 6, -3, -34, -18, 66, -22, 60, -42, 6, -39, 89, -60, 65, -51, -66, -69, 79, 91, -35, -34, 21, 82, -18, 68, 71, -4, -90, -64, -12, 65, 35, 32, 55, 78, 45, -28, 61, -15, 74, -92, -1, 25, 45, -3, 16],
         [51, -30, 5, 26, 33, 38, -52, 69, -40, -80, -89, 97, 78, -77, -30, -83, -72, 51, 52, 24, -26, 54, -85, 42, -89, 77, 46, 61, 22, -63, 21, -35, 98, -51, 0, -36, -26, 71, -13, -99, -56, -77, 50, 35, 52, 9, 60, -29, -32, -43, 85, 65, 7, -38, -63, 90, -24, -12, 2, -44, 19, 13, -36, -59, -36, -57, 24, -78, -74, 16, 87, 47, 39, -31, 47, -97, -82, -95, 51, 62, -84, -72, -50, -23, -48, -49, 65, 76, -41, 16, -92, 83, 13, 39, 97, 95, 38, 72, 55, 98],
         [45, 92, 6, -79, 52, 90, -39, -37, 100, 83, -9, 53, -21, 14, 38, 50, -55, 11, -75, -81, -79, -31, -78, -67, 23, -24, 44, -28, -94, -65, 77, 62, 57, 50, -29, 90, 67, 53, -66, -40, -51, -25, 64, -50, 29, 83, -21, 40, -11, 1, 92, -55, -46, 26, 97, 33, -80, -93, -6, 54, 56, 14, 3, 12, 65, -99, -58, -85, 66, 75, 80, -27, -34, -37, 8, 98, 56, -55, 46, 4, 54, 78, -95, -52, -59, 14, -17, 28, -13, -75, 72, -31, -46, 89, 36, -88, 36, 49, 76, -48],
         [23, -47, -59, 12, 0, -49, -45, 49, -45, 54, 18, 80, -58, 14, 19, 98, -3, -1, 17, -71, -62, 50, 62, -76, 26, -71, -9, -70, -13, -7, 98, 67, 60, 74, 45, -58, -39, 63, 43, 52, 85, -88, -44, 28, 25, 51, 2, -95, 31, -24, 51, -57, 74, 94, 82, 5, 35, -49, 60, -26, 6, 26, -59, 88, -41, -43, 43, -48, 61, 3, -79, 85, -59, 76, 50, -50, 84, 90, -84, -78, 27, -60, -25, 31, 25, 98, 67, -62, -6, -22, 90, 33, 13, -69, 77, -71, -39, 90, -96, 3],
         [-25, 37, -72, 18, -74, 8, -8, 93, 69, 18, 61, -34, -3, 83, -67, 2, 65, 30, -98, 38, 19, -28, -57, -52, -5, 47, 28, -7, 51, 93, -64, -30, -39, 70, 63, 18, -26, -11, 37, 73, 42, -72, 98, 7, -97, 14, 24, 13, -85, 35, -30, -43, -17, -7, -55, -98, -4, 13, 22, -20, 89, 47, -59, -63, -31, 25, 10, 45, -5, 53, -79, -58, -44, -89, -22, -80, -4, -45, 5, -99, 84, 31, -62, 41, 43, 65, -98, -74, 28, -3, 13, -76, -50, 24, -84, -79, 89, -77, 17, -34],
         [-60, 61, 94, -46, 26, -3, 42, 70, 97, 67, -80, 85, -78, -9, 54, -29, 79, 74, 92, -75, -67, -60, -6, -7, 81, -66, 73, -17, 52, 20, 69, 74, -48, 46, -57, -87, 87, 64, 74, -29, 3, -87, -34, -22, 74, -21, -22, -20, -26, 60, -59, 13, 39, -92, 91, -68, 0, -66, -44, 52, -57, -91, -78, 9, -30, -33, 19, -68, 4, 42, 2, 77, 46, 26, 76, -61, -28, -14, 27, 77, 58, -23, 93, -31, -3, -7, -52, 70, -89, 4, -30, 70, -69, -30, -3, -97, 83, 70, 31, -65],
         [10, -34, 80, -68, 52, 95, -41, 79, -34, 60, -68, -31, -93, -18, -38, 15, 25, -87, 90, -6, 5, -19, -77, 19, -23, -78, 64, -2, 27, 55, 62, 43, 99, 28, -88, 74, -42, -47, -30, -64, -68, 57, -71, -3, -95, -70, 87, 93, 31, -54, -2, -27, 33, 31, 75, 6, 100, 67, -53, -43, 52, -76, 92, -97, -74, 92, 72, 99, -28, -75, -20, 30, 97, 17, -9, 98, 2, 84, -21, -68, -4, -41, 30, -64, 26, 14, 18, -60, -30, -18, 80, -100, -15, -17, -52, 64, 36, 12, -94, -53],
         [-33, 43, 50, -91, 93, 13, -85, -65, 52, 33, -14, -31, 18, -69, -31, 94, -53, 79, -92, 45, -27, 43, 26, 15, 79, -94, -85, -6, -100, 38, 34, -15, -59, 4, -68, -8, 9, -63, 66, 12, 9, 43, 15, -46, -51, -7, -22, -21, 34, 32, -62, 39, -10, -1, 66, -51, -27, -44, -44, -46, 57, 0, -5, -75, 62, -79, 19, 52, 89, -69, -42, -15, 51, -26, 5, -25, -3, 65, -59, -95, 50, 87, 11, -93, -38, 32, 55, -37, -83, 48, 8, -42, 80, 21, 7, 16, -71, -25, -81, -91],
         [-11, -56, 23, 62, 30, 1, -89, 96, 57, -41, -33, -22, -3, 17, -55, 68, -80, -63, -67, -63, 38, -90, 2, -97, -28, 50, -58, 80, 88, 53, -27, 99, -76, -64, -18, 26, 27, 26, 66, 64, 56, -79, -57, 42, -32, -83, 80, 91, 22, -91, 31, -41, 8, -86, 83, 20, -39, -95, -21, 69, -91, -96, 89, 18, -95, -90, 57, -71, 27, -100, -16, 24, -96, 49, 93, -80, 91, -80, 47, 74, -77, 35, 72, -56, 29, 19, -23, 8, -49, -50, 94, -59, -3, 16, -36, -1, -26, -88, 39, -66],
         [34, 0, -5, -41, -95, 87, 94, 52, 80, 74, -41, -73, 56, 60, 56, 90, 89, -67, 37, -66, -38, 17, 90, 37, 10, -68, 92, -97, -8, 27, 70, 49, 62, -93, -75, 72, 30, 33, -68, 51, 76, -56, 83, -36, -66, -4, 4, 54, -22, -1, -15, -72, -99, 8, 52, -23, -60, 17, 1, 29, 76, 59, 27, 59, -74, -50, -55, 9, -17, -65, -31, 6, -48, 33, 0, -84, -16, -75, -92, 70, 43, -37, 62, 21, -7, 85, 7, -24, 15, -9, 25, -56, 45, 99, -22, -32, 91, -61, -21, 77],
         [-98, -88, 73, 64, -65, 4, 68, -92, -97, -69, -98, -9, 83, -26, 19, -6, 60, 86, 59, -58, -61, 14, 59, -60, 93, -98, -88, 21, 71, -37, -22, 23, -83, 39, 8, -81, 79, 12, 80, 53, -3, -15, -98, 69, 51, -71, 24, -4, 9, -64, -29, 4, -72, 79, 49, 30, 84, 86, 63, -84, -82, 47, -66, -27, -21, -40, 72, 13, 34, 68, -13, 27, 29, -40, 85, -35, 1, -1, 71, -43, 34, -99, 24, 95, 5, 85, 79, 97, -91, 89, 99, -6, 39, 41, 42, 34, 45, -73, -46, 37],
         [-67, 22, 71, 52, -45, 1, 59, -6, 16, 79, 22, -75, -41, 21, -83, -58, -56, 67, -12, 83, 8, 0, 82, 76, 72, -43, 97, 46, 77, -80, -8, 93, -38, 19, 66, 30, -30, -33, -79, -58, -24, 19, 2, -15, -12, 90, -81, -45, -92, -65, -81, -83, -57, 0, 61, -76, -65, -7, 76, -72, -34, 30, 77, -37, 39, 51, -45, 81, -25, 3, 4, 21, 26, 35, -14, -41, 94, -32, 68, -61, -38, -44, 83, -47, 79, -24, 6, 46, 84, 47, 62, 79, -51, -76, 30, 73, 38, -34, 21, -79],
         [-77, -77, 92, 62, -59, -56, -13, 62, 16, -24, 77, 64, -33, 10, 69, -83, 86, -21, 53, -23, -91, 25, 87, 61, 35, -9, 64, 86, -76, -16, -60, -94, -34, 35, -78, -14, 84, 79, -98, 34, -98, -19, 40, 33, 16, 76, -20, 36, 96, 26, 38, -52, -11, -21, 64, -92, -18, 2, -17, 13, 0, 45, 74, -34, 76, -13, -45, -90, 40, -40, -49, 38, 1, -62, -7, -72, -79, 1, 25, 23, 37, -45, -31, 19, -6, 59, 57, 19, -72, 93, -63, -12, -2, 16, 47, -21, -49, -97, -14, -89],
         [-11, -26, 47, 60, -35, -68, -30, -17, 67, -68, -81, 72, -58, 67, -64, -64, 8, 46, 37, 17, 76, -5, 21, -53, 51, 25, 25, 22, 2, 1, -75, -47, 21, 4, -87, -93, 73, -58, -7, -82, -40, -68, -81, 52, 62, -40, 45, -64, -84, 33, -47, -68, -58, -73, -7, 78, -33, 25, -93, 18, 99, 72, 61, -63, 16, 61, -50, -89, 72, -21, -51, 74, -75, -57, 2, 36, -61, 8, 1, -67, -35, -51, -83, 100, 8, 85, -7, 70, -92, -48, 57, -35, 9, -60, -95, 97, -51, 61, 79, 41],
         [19, -72, -42, -20, -74, 69, 15, 51, -6, 15, -57, -68, 5, 68, -75, -84, 8, -24, 19, -77, -30, -44, -1, -71, -39, -30, 46, -86, 36, 33, -63, 44, -61, 42, 24, -22, 7, 24, 9, -95, -87, -18, -43, -52, 80, -3, 38, -84, 81, -87, 63, 86, -63, 13, -69, -76, 2, -67, 4, -29, -10, -43, -59, -75, 89, -30, 24, -91, -15, 50, -37, 84, 86, 78, -88, 77, -82, 92, -53, -30, 37, 7, -28, 70, -44, 5, -51, -57, -57, 90, -72, -59, 64, 79, 85, -80, 87, -18, -28, -2],
         [46, 21, 60, 71, 24, 80, -61, 3, -6, 39, 81, -12, -1, -38, 22, -41, 20, -70, 72, 8, -37, -27, -14, -2, -32, -29, -89, 84, -73, 66, -41, -35, -55, -29, -98, -61, -43, 71, 8, 88, -70, 92, -28, -8, 55, -22, -64, -62, 25, 18, -71, 74, -55, 43, -18, -51, -73, -45, 96, -42, 57, -80, -73, 88, -98, 20, -97, -49, 56, -71, -65, -37, 54, -82, -46, 86, -55, -68, -7, -30, 90, -55, -82, -45, -17, -51, -35, 24, -37, -25, 81, 42, 35, 21, -21, -4, 47, -32, 56, 72],
         [-50, -14, 45, -62, 28, -15, -6, -89, 38, -7, -55, 14, 8, 94, -71, 51, 46, 21, -23, 8, -71, 29, 51, 94, -30, -89, -87, 0, -70, -5, -83, 4, -24, -32, -96, -67, 71, 26, -10, 63, -95, -59, 95, 100, -93, 58, 46, -8, -87, 89, -71, 78, 71, 17, 87, -93, 80, -55, -98, 12, -56, -81, -80, -35, -77, 77, -54, -57, -32, -9, -42, -56, -76, 55, -69, -79, 26, 31, -10, -50, 82, -24, -28, -62, 40, 24, -50, -69, -62, -32, -64, -96, -20, 75, 60, -41, 98, -75, 87, 6],
         [72, 99, 29, 19, 46, 71, 100, -7, 85, 1, -43, 18, -46, 72, -46, -83, -90, -45, 51, -55, 49, -5, 20, -78, -99, 83, 67, -70, -64, -33, -58, 53, -37, -25, 23, 50, -74, -68, 19, 3, 91, 60, -26, -37, 26, 39, -33, 49, -53, -48, 43, -93, -75, -42, 49, -83, -15, 71, 26, 11, 87, -82, -36, -2, 79, -68, -82, -15, 60, -75, -24, 42, -51, 75, -29, 34, 10, 37, -18, 37, -72, 11, 42, 23, -85, 49, -13, -78, 29, 98, -26, 58, 32, 93, 78, 21, -32, -87, -77, -45],
         [15, 31, -14, -58, 34, -96, 40, 76, 52, -53, -4, -92, -49, 64, -64, 86, 82, -82, -48, -13, 58, 64, 1, -29, -61, 24, -58, -84, -86, -39, -70, 5, -18, 22, 51, 29, 17, 52, -5, -75, 21, -17, -95, -56, -92, -40, -52, 82, -64, -53, 81, 3, 64, -34, -76, -26, 73, -12, 74, -82, 17, 16, 88, -62, 75, -36, -71, -56, -67, -9, -69, 33, 62, -64, 84, 90, 38, 95, -13, 1, 3, 6, -34, 69, -82, 42, 13, 27, 36, 37, 86, -81, -29, -32, 82, 83, -36, 70, -67, -11],
         [-43, -52, -42, -40, 28, -82, -6, -9, 31, -58, 53, -56, -9, 37, 29, 11, 19, -88, -20, 74, 7, -22, -35, 56, 6, -40, 60, -21, 28, -7, 81, -26, 90, 81, 41, 49, -62, 74, 92, 58, -88, 85, -5, -74, 25, 5, 86, -43, -78, 5, -79, -40, 0, 90, -46, 84, 73, -87, -17, 79, -53, 89, 89, 69, -40, -59, 34, 29, -30, 81, 54, 36, 15, 70, -30, 99, -79, -67, -46, 1, 50, 8, 37, -4, 9, 24, -44, 58, -68, 23, -56, -27, -85, -95, -65, 40, -83, -74, -61, 98],
         [62, 73, -1, 21, 68, -55, -6, -50, 77, 24, 96, -42, 67, -97, -100, -10, -16, -20, -38, -5, 48, -62, -42, -10, 10, -69, -84, 65, 44, 39, -89, 13, -61, -89, 77, -77, 10, 92, -10, 86, -26, -7, 67, -55, 56, -22, 81, -49, -29, 57, 66, -35, -62, 5, -87, 41, -81, 44, 25, 73, -78, -42, 70, -65, -97, 74, -71, -46, 84, -86, 61, -63, -44, 51, 90, -77, 57, 44, 24, -89, -12, -90, 58, 97, 20, -100, -1, 38, 44, 31, 93, 55, 56, -91, -78, -61, -73, 17, 82, -2],
         [-46, 18, -26, 0, 3, -27, 38, 44, -59, 69, -16, 18, -68, -10, -9, -8, -13, 52, -63, 47, 20, 39, -84, -36, -99, -77, -48, 14, -23, 26, -32, 80, -4, -27, 31, -30, 38, -61, 29, 10, -42, -29, -1, -2, 94, 12, -50, -12, -10, -20, -6, 94, 18, -70, 17, 68, 35, -84, 73, -10, 16, -13, -100, 80, -74, -5, -3, 60, -68, -10, 9, -43, 13, 23, -27, -74, -84, -12, 64, -86, -44, 9, -36, -66, 75, -46, 4, 21, 99, -16, -77, 58, -76, -67, -46, -26, 90, 82, 41, -8],
         [-67, -65, 87, -46, 22, -53, 22, 56, 39, -85, 48, -79, -88, 79, 21, -40, 76, 26, -21, 10, 61, 58, 61, -6, 93, -21, -55, -57, -67, -77, 58, -12, -74, 22, 94, 33, -38, 90, 38, -23, 82, -39, -53, -33, 21, -26, 90, 86, 69, -14, -94, -57, -50, -71, 40, 95, 74, -48, 33, -87, 39, -82, -54, -73, -43, -29, -58, 18, 49, 58, 88, 49, -52, -31, -29, 36, -20, -64, -91, -23, -84, 93, -48, -70, -33, -7, -46, 37, -95, 91, -17, 30, 18, -68, -49, 98, -34, 34, 36, -12],
         [-63, 8, -65, -94, -39, -9, 98, 68, -97, -92, -14, 59, -22, -9, 79, 94, -86, -70, -13, -44, 21, 35, -58, -8, -32, -66, -10, 72, 6, -27, -41, 47, -100, 87, 82, -3, 62, 45, 50, -70, -85, 48, 61, 15, 33, -20, -28, -6, -71, -67, -40, -11, 91, -31, 95, -27, -95, 30, -23, 30, -14, -46, -95, 16, -13, -52, 0, -36, 38, 45, 26, 52, 41, -62, 23, -33, -38, 25, -28, 72, 41, -90, -7, 76, 17, 51, 3, -56, -38, -94, -73, -15, -26, -44, -79, 87, 9, -86, 86, -77],
         [-79, 58, 15, 48, -73, 24, 79, 1, -39, 83, -65, 8, 32, -6, 64, -74, 7, -35, 21, 34, 73, 61, -95, 30, 16, 78, -34, -28, 26, 84, -20, -86, -48, -12, 84, -58, 60, -66, -31, 39, 59, 69, -1, -91, -79, 42, 11, -35, 69, 13, 59, 66, -67, 61, 57, 34, -61, 87, -43, 44, 29, 80, -4, 31, 59, 29, 39, 91, -77, -97, -37, -90, 98, 41, 30, 5, 17, 80, 14, 56, 19, -91, 100, 62, -62, -74, -5, -9, 19, 30, -57, 45, -16, 61, -70, 80, -71, 94, -36, -1],
         [-89, 19, 1, 16, 43, -83, -50, -20, -33, 84, 91, -94, 67, 74, 30, 5, 19, -31, -79, 99, -43, 84, 7, -32, -80, -90, 65, -38, -85, -71, -38, 3, -9, 29, 74, -38, 10, 15, -28, -37, -79, 37, 55, 16, 88, 14, 22, 6, 72, 97, 97, -93, -100, -89, 82, 65, -25, 85, 6, 82, -88, 58, 10, 91, 79, 70, -16, -65, 6, 46, -4, 51, -36, 54, -50, 69, 57, 100, 70, 21, 54, 21, -6, 46, -86, 69, -32, 58, 12, -42, -55, -49, -53, -39, -52, -45, -43, 79, 60, 80],
         [-68, -70, 35, 66, -85, 84, -78, -12, 60, -15, 31, 51, 60, -100, -38, -31, -17, 3, -36, 41, 19, -83, 18, 22, -67, -84, -19, 68, 54, -13, -70, 30, -32, 56, 46, 84, 1, 67, -32, 78, 84, 95, 12, 37, 13, 97, -74, 51, 98, -89, -41, -39, 18, 9, 36, 29, -96, 100, 33, 0, 58, 57, -50, -38, 68, -86, 88, 46, -90, 29, -93, -92, -25, -81, 81, 17, -30, -7, -11, -43, -63, -31, 5, -97, 80, -4, -41, -86, -70, 87, -4, -40, 34, 87, 50, -64, -48, -39, -98, 45],
         [-93, -58, -42, -74, 31, 83, -89, 73, -86, 57, -71, -46, 60, -93, 6, -1, -77, -98, 26, 57, 28, -56, -91, -57, -48, -1, 41, -98, 55, 37, -53, 7, -19, 19, 73, -66, 78, -39, 40, 71, 25, 1, 37, 93, 54, -84, -25, -74, 38, 69, -59, 64, -71, -19, -30, -45, 22, -76, 33, 10, -5, 35, 63, 29, 15, 10, 75, -39, -10, -83, 82, 5, 68, 100, 22, 15, -49, 12, 74, 46, -32, -69, 72, 99, 59, -22, 85, -75, 65, 16, 98, -37, -9, -7, -7, 91, -39, -9, 21, 69],
         [36, -84, 81, 76, 49, 48, -6, -12, -72, -11, -55, -47, -94, 68, 2, 79, 54, -45, 96, 3, 43, -8, 53, 77, -46, 92, -12, 2, -50, -19, -78, -22, -33, -73, -13, 83, 74, -88, -91, 4, 61, -82, 99, 86, 98, -97, 23, 2, 11, -12, -17, -53, 2, -7, 71, -64, -43, 99, -43, -62, -6, -71, 10, -82, 30, -41, -41, -81, -61, 75, 39, 46, -46, -65, -8, -88, -7, 85, -6, -16, 82, -73, 29, 98, -22, -70, -8, -41, 42, 41, -81, -24, 8, -15, -57, 84, 27, -47, 11, -58],
         [-43, -45, 64, -40, -61, -25, 60, -77, 34, 49, -96, -69, 97, 45, 4, -45, 85, 51, 93, -83, 5, 89, 67, 5, -72, 31, 31, 9, -51, -41, -46, -69, 42, 23, -40, 39, 24, -50, 35, -60, 12, -36, 25, -67, -90, -84, 12, -85, 32, -33, -18, 60, 48, -5, -32, -32, -42, 87, 96, -98, 51, -32, 98, 90, -82, -68, 55, -60, 50, -14, -26, -40, 46, -54, 76, 32, -15, 33, 61, 36, 38, 40, 16, 0, 35, 81, -57, -43, -41, -13, 86, -83, 56, 50, -84, 79, -39, 51, -36, -99],
         [3, 48, -75, -42, -40, 48, -33, 51, 40, 25, 87, -63, -74, 19, -10, -52, -31, 2, 71, -78, -23, 45, 45, -60, -65, 87, 68, 25, 97, -53, 14, 11, 87, -96, -68, 96, -70, 51, 100, 21, -47, -45, 97, -43, -75, -8, -61, 97, -33, 37, 38, -31, -100, 33, -61, 65, -93, -86, 8, 15, -90, 85, 77, -48, -40, 15, -14, 36, 33, 63, -86, -36, 71, -9, 16, 7, -25, -61, -64, -39, -58, 46, -80, 51, -55, 28, 5, -22, -90, -62, -52, 60, 47, -3, 2, -29, 88, 89, -52, 82],
         [27, -32, -72, -3, 16, -56, -79, 27, -91, -1, -88, 13, 51, 47, -47, 32, -56, 36, -20, -96, 9, 91, -78, -29, -74, -45, 6, 56, -45, -7, 33, -74, 37, -74, 96, 94, 20, -26, -76, 93, -62, 55, -42, -4, 3, -98, -98, 63, 78, 76, 54, 50, -71, -85, -71, 8, -39, -68, 30, 32, -20, 33, 77, 86, -92, -37, 8, 17, -86, 63, 8, 40, 64, 11, -91, -23, 61, 70, 93, 58, 11, -92, 91, 61, 60, 5, -5, 65, -49, -33, -16, -61, 41, -23, -86, 92, -30, -81, 51, -47],
         [34, -83, 99, -55, -84, 52, 90, -30, 36, -99, 99, 99, 33, 3, -6, -88, -43, 92, -27, -72, -5, 7, -96, 90, 66, -90, 73, -55, -53, 55, -34, -40, 42, -51, 17, -93, 9, 27, -37, -5, 73, -53, -90, 60, -81, 1, 78, -77, -79, -81, -25, -17, -47, 10, -8, 34, -70, 88, -35, -33, 80, -20, 2, -10, 9, -3, -11, -53, -64, -85, 58, 40, 43, 69, -26, 77, 52, -70, -96, -41, 41, 26, -77, -8, -43, 27, -74, -41, 41, -54, -57, 94, 16, 33, 83, -51, 28, 19, -62, -51],
         [34, -39, -2, 6, -60, -15, -12, -79, 78, 78, -48, -54, -69, -51, 42, 83, 11, 18, 94, -68, -93, 93, -96, -13, 23, -96, -47, 94, 10, -85, 25, -91, -2, 13, 17, 13, -56, 4, 40, 12, -7, -48, -82, 28, 53, 83, 4, 90, 1, -6, -97, -43, 36, -43, 75, 26, -92, -58, 26, 87, -61, -58, -100, 14, -98, 43, 98, 7, 57, -62, -69, 14, -35, -30, 43, -15, -57, -39, 1, 74, 98, 94, 27, -98, 25, -49, -80, 78, -33, 6, 86, 92, 91, 38, -8, 86, -98, 16, 44, -57],
         [76, 70, -71, -36, -67, -26, 28, -23, -80, -16, 41, 30, -26, 0, 94, 55, -46, 65, -3, -23, -29, 68, -88, 30, 64, -12, -92, 29, -68, -57, 97, 23, -89, 90, 47, 41, 3, 19, 33, 58, -71, 83, -8, -96, 66, -90, -47, 100, -87, -42, 15, -55, -91, 14, -24, 45, -41, -90, -22, 66, -79, -60, 95, -93, -30, -60, 25, -60, -34, 10, -16, 31, -46, 40, 99, 60, -94, 45, 27, -30, 42, 81, 79, -70, -92, 75, 20, -12, 98, -83, 32, -38, 46, -6, 35, 65, -10, -34, -10, -66],
         [26, -29, -42, -9, 78, 0, 10, -50, -38, 32, 1, 13, -77, 81, 85, -57, -96, 96, -61, -29, 2, 82, 70, -48, -91, 31, -39, -26, 53, 24, -97, 82, 10, 44, -63, -40, -12, -94, 60, -33, -86, 11, -32, 13, -64, -14, 30, -50, -37, -56, 40, 31, -28, -56, -16, 72, 84, 99, -93, -86, -47, -13, -13, 25, -2, -84, 63, -76, -15, 47, -11, 56, 24, 58, 62, -57, 0, -16, 84, -51, 70, -75, -16, -41, 59, -67, 1, 76, 20, 12, 30, -70, -81, -15, 80, -13, 25, -84, -20, 68],
         [-73, -70, -6, -15, -61, 77, -55, 99, -7, 39, 9, 57, 15, 9, 3, 63, -97, -60, 82, 72, -65, -95, -59, 37, 94, 34, 15, -13, 77, -100, 57, -7, -5, -21, 77, 2, -87, 53, -81, -73, 11, -33, 20, 35, 36, -46, 77, -42, -63, -20, -19, 67, -78, -82, 16, -2, -97, 53, 78, 66, -84, 58, 0, -18, 67, 61, 82, 41, 8, 95, -66, 0, -38, 60, -48, -25, -28, 52, 78, 57, 27, 44, -35, 63, 9, -55, 65, 7, 15, -39, -16, 34, -18, 12, 55, -41, 57, -20, -92, 19],
         [-91, 27, -87, 70, 46, 77, -6, -45, -44, 6, 24, 24, 93, -51, 97, 19, 6, 16, -34, -47, -58, -63, 88, -79, -21, -94, 51, 53, -12, 95, 23, -44, -46, 45, 68, -40, 82, 70, 31, 70, 31, 62, 38, 30, 60, -35, 20, 77, 36, 22, -16, -15, 84, -74, 32, 58, 33, 80, 56, 31, 48, -18, 97, -25, 21, -48, 62, -2, 71, -90, 22, 56, 82, -78, 36, -87, 69, -52, -41, -24, 54, 39, 46, 8, -68, 24, -40, 42, 11, 18, 61, -62, -18, 74, -32, 52, -17, -22, -31, 26],
         [-98, -4, -5, 21, 100, -99, -69, 59, 93, 93, -60, 57, -26, -44, -71, -71, -66, 24, -92, -65, -89, 44, 32, 32, -32, 64, 2, 42, 11, -73, 26, 23, 51, -18, 87, 71, 10, -50, -60, -41, 73, -50, 33, -31, -39, 46, -79, 86, -33, 3, -55, -56, 51, 20, 7, -29, 19, 0, -98, -71, -79, 79, -46, -55, 11, -8, -33, 75, 68, 51, -46, -18, 1, -39, -79, -36, -45, 10, -10, -87, 94, 33, -80, 42, 73, 7, 9, -78, 95, 62, -49, 38, -43, 4, -87, -45, 27, 50, -47, -35],
         [96, -96, -41, -60, -39, -44, 17, -76, -27, -44, -39, 50, -30, -13, 72, -23, -19, 13, 99, -65, 45, -37, -83, 46, 83, 65, 14, -72, -25, -50, 76, 26, -54, 68, -42, 30, -88, 73, 9, 85, 38, 60, 7, -62, 43, 80, -92, -44, -38, -50, 80, 27, 21, -98, 67, -52, 60, -33, -77, -97, -44, 31, 57, 60, 75, -44, 3, -5, -49, 8, -39, -94, 58, 34, 7, 14, -32, 42, 78, -3, 70, 27, -8, -55, -24, 32, -79, 59, -24, 66, -27, -80, 62, 99, 94, 7, -66, -2, -84, 0],
         [-74, 56, 86, 29, 74, 91, 59, 36, 32, -79, -78, 66, 61, -93, 20, 29, -70, -47, 91, 41, -37, 3, 32, 94, -16, 90, 7, 67, 94, 31, 99, 3, -49, -37, -47, 71, 66, 43, 92, -36, -15, 41, 57, 98, 38, 59, -61, 80, 33, 92, -74, -100, 48, -83, -92, -26, -99, -81, -6, 6, 39, -17, 30, 10, -96, 33, -77, -91, -6, -48, 14, 4, -37, -98, 25, -18, -50, -83, -49, -87, -32, -88, 42, 16, 59, 26, 71, 99, 38, -57, -18, 27, 59, -69, -51, 29, 13, -47, -9, 37],
         [-32, -69, -27, -76, -88, 50, 71, -23, 89, -54, 65, 27, -52, -74, 50, -6, -68, -62, 68, 58, -93, 64, 47, 2, 39, -60, -91, 92, -58, 100, -61, 16, -3, 7, 80, 62, 28, 96, 88, -65, 76, 76, -61, 3, -6, 68, -47, -97, -14, -70, 13, 24, 3, 13, -78, -46, -14, -36, -92, 86, -36, -79, -34, -33, -49, 16, 90, -67, 96, -28, -96, 29, -83, 45, 84, 61, -69, -99, -14, 23, 73, 58, -5, 34, -48, 79, -93, -14, -29, -3, 16, 58, 31, -45, -24, 77, 69, -97, -91, 4],
         [-97, -96, -14, -40, 10, 18, -77, -9, -5, 37, 42, 27, 4, 41, -27, 75, 54, 38, -79, 4, -68, -49, -12, 86, 55, -70, 73, -82, 70, -17, -75, -48, 32, 6, -56, 2, 16, -95, 21, 13, -65, 85, -4, -62, -56, -88, 41, -11, -34, 16, 4, 2, 5, 17, 89, 30, 90, 62, 90, -10, -48, 99, 67, -5, -47, -9, -31, -10, -92, -31, 57, 31, 93, -21, -50, -71, -96, -93, 4, -100, -4, -9, 33, 59, 6, -41, -25, 43, 45, 94, -21, 47, 24, -30, -38, 95, 90, 85, -73, 52],
         [17, -89, 42, -10, 90, 94, 77, 14, 45, -79, 73, -91, -68, -56, -70, -97, -56, 45, 38, -40, 45, -97, -49, 83, 13, -38, 36, -33, -55, -95, -5, 50, -2, 65, 70, 5, -79, -42, 83, -68, -58, -1, 37, 51, 19, -13, -66, -40, 90, 38, 96, 29, 11, -35, -5, 71, -4, -92, 84, 27, -79, 10, 3, 30, 96, 15, 32, 10, 42, -19, -21, 0, -19, 44, 50, -11, -81, 36, 27, -34, -95, 58, -57, 23, -82, -41, -54, -17, -85, 76, -40, -55, -15, 47, -20, 0, 68, 51, 6, -6]]

    b = [[28, 57, -75, 95, 95, -95, -26, -68, 68, -7, 20, 46, 78, 10, 25, 71, 62, -32, -8, 96, -62, -90, 95, -17, 73, 49, -84, 29, -65, -39, 19, -67, 6, -32, 31, -56, -5, 93, 30, -43, -57, 17, 99, 71, 43, 7, 8, 73, 88, -4, 22, 44, -17, 20, -47, 6, -75, -93, 8, -29, 49, -44, -56, 29, 27, 69, 7, 6, 71, 20, 82, 12, 33, -3, -71, 73, 34, -86, -13, 70, 77, -72, -96, 7, 68, 39, -28, -30, 89, 100, 63, -14, -76, -70, -16, -36, -30, 95, -43, 6],
         [40, 94, 85, -69, -10, 34, 52, 96, -81, -41, -19, 81, 75, -36, 22, -97, -19, 14, 22, 18, 56, -26, -97, -11, -90, -52, -8, -78, -76, 36, 26, -80, 60, 48, -56, 52, -39, 15, -100, 46, -34, -24, -82, -18, 48, 72, -21, 54, 53, -65, -73, -58, -87, -21, 94, 90, -42, -4, -62, 28, 56, 78, 73, -55, 65, -5, -27, -21, 35, 94, -44, -24, -1, -41, -25, 11, -47, -10, 30, 54, -44, -12, -90, -51, 70, -88, 49, -34, -88, -59, 70, -35, 56, -40, 6, 44, 2, 59, -51, 75],
         [18, -27, 71, -72, 26, -9, -12, 99, 25, 89, -64, 27, 61, -23, -29, 77, -93, -69, 9, -70, -83, 98, -14, -39, 23, 57, 91, -85, -18, -44, 43, 42, 24, -19, 47, -28, 65, 25, -16, -57, -67, 14, 55, 46, 77, 83, 87, -11, 68, 74, 80, -88, -60, 51, -23, 78, -61, -1, 99, 79, -73, -88, 83, -19, 1, 15, -99, -15, 28, 67, -69, -62, -57, 14, 84, -80, 12, 37, 9, 15, -15, -84, 73, -57, 43, -51, 43, -1, -38, 33, 56, 93, 84, -63, -94, -2, -11, 99, -53, 5],
         [-34, 83, -94, 91, 84, -27, 36, 58, -43, 62, 35, -53, 71, 41, -80, -69, -58, -76, 100, -65, -96, 50, 94, -48, 28, -25, -12, 50, -23, -93, 29, 64, 20, -41, 28, 51, -45, -74, 43, 14, -45, -91, -59, -62, -86, 75, -97, -71, 22, -13, 23, 14, 67, 98, 88, -30, -36, 38, -57, 33, -6, 6, -59, -15, -33, 0, -40, -70, -11, -47, 41, -40, -33, 5, 87, -78, -62, 61, 92, 73, 93, -37, -6, 99, 53, 27, -43, -63, -81, -10, 26, -2, -95, -57, 44, 82, 15, -41, -17, -86],
         [-39, -96, -75, -52, 82, 100, -42, 7, 15, 86, 23, 78, -60, 59, -4, 54, 57, -80, -27, 12, 35, 83, 21, -62, -86, 68, 58, -74, 70, -89, -59, 69, 93, 98, -15, -80, -66, -27, -54, 41, 14, 93, -89, 59, -91, -12, 61, 51, 71, -10, 66, -94, 91, 53, 17, -33, 68, -31, -78, 30, -87, -81, 36, 70, -11, -22, 33, -94, -65, -11, -82, -86, -32, -74, 37, 27, 71, -57, 78, -96, -39, 83, 91, -90, 45, -83, -94, 72, -54, -1, 0, 66, 54, 91, -73, -86, 95, 87, 96, -44],
         [16, 24, 64, 92, 56, 65, 32, 45, -26, 98, -31, -76, 86, -96, 62, -5, -19, 44, -43, -54, -65, 85, 17, 83, -82, -33, 29, -81, 79, -27, -49, 7, 76, -66, -87, -9, 60, -29, 50, -5, 33, -34, 13, 68, 24, -92, -35, 64, -28, 39, -58, -86, -24, 25, 35, 9, 93, 1, -12, 9, -52, 56, 53, -86, 7, 99, -53, -64, -49, 96, 79, 17, -93, -93, -23, -27, -93, -56, 75, 97, 83, -43, -74, -68, -81, 17, -77, 27, -47, -70, -65, -79, 39, -88, -59, -64, -4, -71, 81, 48],
         [-41, 87, -60, 76, -61, -7, -39, -86, -53, 94, 75, 4, -40, 25, -98, 0, -55, 27, 49, -29, -22, 37, -54, 42, -45, 18, 97, 82, -98, 45, -63, -97, 98, 66, -37, 29, -10, 79, -75, 60, 2, -49, 0, -40, 57, -14, 5, -56, -12, -7, -94, 89, -60, 46, 91, 85, 5, -32, 83, -79, -45, 15, 76, -83, -76, -34, -9, -33, 79, -5, 45, -89, -66, 20, -6, -43, -28, -5, 42, -73, -8, 59, 2, -54, 62, 8, -70, -23, -44, 91, 2, -23, -63, -74, 5, -29, -62, -88, -23, 99],
         [73, 59, 86, -56, -12, -83, -7, 12, -6, -44, -44, 14, -33, 27, 82, 64, -5, -32, -10, 29, -25, -2, 13, 56, -58, -44, -83, 25, -86, 4, -61, -38, 50, -59, 51, -72, -73, -71, -83, 19, 70, 49, 96, -100, 42, 87, -71, 34, 39, 68, 23, 33, 19, 56, -73, 1, -69, -60, 9, 27, 36, 52, 100, -66, 63, -63, 65, 97, 62, -19, 70, -65, 95, -22, -84, -33, 76, 73, 52, 7, 90, 98, 21, 98, -73, 1, -16, 4, 12, -66, -87, -6, 76, -59, 16, -83, 56, -7, -83, -41],
         [31, -27, 28, 13, -84, 70, 85, -46, -15, -95, 14, -85, 9, -46, 37, -25, -64, 68, 59, -99, 43, 24, -56, -71, 59, -71, 40, -86, 78, 33, -67, -50, -3, -26, 56, 53, -18, 25, 87, -82, -32, 82, 46, 0, -48, 6, -83, 40, -60, -16, 35, 92, -72, -5, -38, 8, -2, 84, 75, 35, -71, -53, 3, 76, -86, -67, -25, -86, 82, -72, 67, -88, -38, 9, -52, 98, 36, -94, -86, 42, -7, -14, -73, 34, 15, 51, 8, 37, -97, 95, 97, 7, -11, 59, 6, -77, -91, 73, -97, 85],
         [-69, -49, -68, -73, -55, 58, 27, -91, -9, -53, -76, -32, -94, 17, 54, -69, -65, 43, -47, -21, -64, 70, -3, 63, 11, 94, 97, 44, -29, 22, 5, 85, 90, -15, 57, 88, 44, 2, -63, 67, 98, -53, -11, -42, 37, 60, -87, -69, 4, -33, -90, -49, -50, -87, 2, -71, -28, 32, 2, -23, 69, 74, 100, -77, -6, -82, -96, 60, 58, -54, 19, 19, -25, 76, 9, 96, 66, -63, 12, 56, 83, 16, -60, -61, 47, 40, -13, -77, -10, 69, -98, -72, -2, 64, -55, -84, 7, 62, -93, 78],
         [97, 69, 44, 17, -48, -2, -2, -75, -17, 84, -39, 51, 51, -16, -65, 17, -54, 19, 19, 52, -75, -22, 13, -83, -65, 33, 46, -20, 37, 39, -82, -13, 59, -13, 78, 71, 21, -48, -72, -9, -56, -27, 36, 37, 31, 31, 84, -25, 47, 58, 87, -96, -15, 19, -12, 42, -2, -94, -27, -27, -15, -47, 3, 44, 15, -4, 56, -90, -62, 27, -40, 71, 44, 75, 9, -94, 53, -88, -59, -54, -61, -40, 46, 15, -95, 83, 60, 64, -94, -91, 47, 45, -29, 7, 78, -47, -13, 51, 9, -65],
         [13, 87, 48, -83, 39, -36, 55, 50, 58, -54, -70, 95, -19, -50, -97, 39, -37, 79, -64, -8, 40, 92, 42, 74, 32, 26, -51, 53, -81, -21, -22, -98, -46, 64, -74, 12, -66, -73, -83, -30, 18, 66, 75, -7, -73, 19, 90, -24, -66, -29, 14, 72, -26, 79, 15, -80, 36, -38, -74, 8, -28, 38, 52, 64, -63, -37, 47, 74, -33, -82, 62, 93, -92, -88, 70, 36, 1, -81, 73, -5, 42, -66, 70, -49, -45, -90, -41, -86, 84, 50, -35, -59, -54, 16, 3, -31, -92, 72, -64, -81],
         [-53, -17, -35, 4, -67, -52, 85, -7, -66, 21, 30, 37, -61, 40, 50, -82, 72, -55, 75, 41, 90, 23, 12, -2, -46, 70, 69, 27, 88, 80, -51, 20, -87, 91, -70, 46, -32, -50, 26, -8, 57, 88, -28, 97, 51, 22, 83, -24, 8, 48, -31, 15, -14, -31, 86, 16, 84, 53, 31, -80, 41, -38, 76, -26, 82, -46, -37, 69, 21, 95, 80, -78, 80, -7, 59, 39, -63, 75, 2, 1, 56, -22, 60, 58, -33, -5, -35, 65, -53, -33, -94, -92, -15, 48, -23, -44, -97, -19, -79, -22],
         [-63, 98, 1, -81, -27, 21, 56, -45, 84, -83, 96, 10, 67, 87, -31, 69, -55, -39, -57, 78, 46, -76, 47, 44, -49, -29, -42, 84, -4, 11, -74, -92, -57, -78, -23, 76, -53, -5, 83, 100, 89, -49, -52, -42, 71, -20, 53, -55, 23, -100, 73, 27, 68, -90, -29, -77, 20, -48, -16, -15, -1, -21, 69, 89, 39, -94, 68, -39, 40, -53, -54, -4, 40, -54, -87, -83, -97, 25, -45, 98, 70, -36, -85, -51, -44, 14, -51, -43, -54, 19, -31, -82, 46, -98, -86, 25, -58, 45, -84, 80],
         [-98, 91, 39, -62, 1, -20, 14, 76, 55, 58, -6, -87, 28, 56, 4, 3, 5, 79, -51, 74, -20, -62, 50, -79, -96, 12, -30, -77, 43, -34, -91, 0, -48, -51, 96, 82, -14, -87, 93, 61, -24, -18, 7, 98, 80, 62, 62, 29, 1, -89, -80, -2, -34, -6, 44, 36, -22, 90, -86, -42, -4, 84, -84, -1, 19, 31, 82, 20, -44, -14, -58, -14, 79, 95, -21, 94, -17, 68, 51, -44, 78, 60, 92, -76, -96, 74, 8, 78, -8, 2, 6, -5, -43, 99, -100, -87, 12, -42, -38, -100],
         [79, -50, 31, -35, -12, 86, 39, -46, 93, -79, 48, -8, 28, 16, -58, 97, -1, 8, -62, 55, 3, 59, -54, -48, 58, -87, -89, -86, 84, 75, -89, -7, 97, 88, -5, 34, -27, -9, 40, 25, -81, -42, 23, -75, -13, -79, 77, -12, -55, -63, 18, -73, -6, -43, -53, -40, -89, -27, 24, -2, 14, 73, -7, 84, 38, -56, -98, -45, -76, 21, -26, -65, -17, 98, -26, 66, -92, 35, -13, -75, -70, -39, 18, -90, -7, 56, 29, -67, -67, -1, 44, -90, 99, -50, -40, -19, 67, -12, -56, -53],
         [-42, -13, -27, 63, -79, 70, 82, -59, 39, -19, -48, -98, -86, -21, -8, 5, -38, 25, -52, 4, 13, 25, 5, 14, 68, -42, 26, -6, 26, -98, -71, -90, 28, -42, -62, -9, -74, 14, -67, 54, 77, 83, -56, -73, -73, 14, 69, -22, 53, 45, -62, -55, -95, -70, -92, 21, -64, -48, 65, -42, 70, -88, -100, -31, -20, 8, -41, -47, -38, 20, 15, 7, 29, 74, -97, 6, 7, 9, 64, -13, 33, 23, -63, 8, -16, -96, 77, -57, -36, 79, 29, 63, -38, 30, 3, -40, -59, -35, -74, -31],
         [-23, 45, -37, 65, -24, -12, -17, 57, -57, 70, 61, -92, 92, 20, -87, 61, -68, 68, 28, 38, 20, -43, -62, 5, 66, -95, 60, 27, -19, -62, -73, -89, -52, 23, 7, 46, 13, -44, -55, -59, 90, 100, 45, -15, -88, 52, -6, 5, -43, 18, 56, -80, -47, -10, -38, -55, 20, 12, 85, 97, -35, 13, 52, -14, 1, -15, 47, 25, -66, 94, 90, 90, -74, -17, -19, 95, -58, -64, -84, 62, 19, -97, 74, 71, 42, -53, 96, 23, 96, -90, -44, -57, -1, 34, -88, -51, -64, -60, -63, -51],
         [90, -55, 13, -18, 87, 24, -16, 52, 31, -1, 49, 18, -87, -26, 98, -52, -10, 59, 63, -73, -98, 60, 48, 11, 26, -88, -45, 73, -44, -28, 67, -20, 19, -51, -20, -92, 61, 20, -53, 60, -53, -89, 13, 71, -93, 44, -33, 79, 20, 30, -29, -65, -6, 21, 38, -92, -5, 23, -42, -96, 99, -33, -54, -96, -9, 77, -71, 97, -28, 24, -25, -93, 63, 96, -14, -75, -25, 91, -60, 62, -49, 6, 61, 82, 65, -34, 37, 95, 12, -4, 37, 99, -62, -80, 10, 59, -3, -6, 37, -43],
         [-64, -87, -38, 95, -55, 23, -8, -53, -45, -98, -9, 19, -95, -70, 23, -89, -90, 61, -11, -98, 92, -63, -10, 39, 34, 95, -96, 65, -99, -86, -8, -74, 100, 83, 16, -63, 99, -65, 37, -78, -30, -86, 35, -3, -50, -39, 96, -76, -97, -28, -43, -98, -2, 69, -21, -5, 67, 6, 23, -18, -52, -7, 93, -82, -9, -6, -14, 88, -84, -50, -46, 16, -14, 12, 57, -59, -4, -96, -8, 65, 21, -52, -11, 54, -5, 8, 99, 70, -65, 65, -37, -76, -58, 90, 43, 25, 35, -22, 12, -59],
         [-37, 73, -26, 83, -65, 75, -49, 13, -46, -29, -94, -36, -33, -24, 57, 65, 61, -95, -45, 21, -17, -47, -48, 34, 64, -3, 43, -95, 66, -29, 64, 33, 73, -65, 88, 26, -8, -42, 78, -98, 28, 44, -35, 56, -96, -89, -23, -81, 16, -84, 71, -42, -59, 54, -22, 99, 100, 14, 80, -46, -66, -74, 99, -22, 94, -13, 5, 84, 72, 49, 41, -41, 81, 55, -41, 72, 1, 96, -30, 95, -90, 44, 30, -91, 71, 43, -91, 42, 49, -17, 82, -33, 42, -11, 32, 9, 72, -39, -72, -16],
         [-41, 22, 28, 93, -92, -73, -74, -3, 2, -18, -6, -32, 99, -21, 77, 83, 79, -43, -63, -10, 27, 89, 94, -30, -18, -37, 89, 34, -59, 75, -19, 23, -36, -93, -26, -55, 57, 33, -29, 44, 34, -49, -81, -82, 58, -72, 40, -40, -98, 0, -38, -95, -68, -2, -62, 82, 57, 23, 17, -15, -96, -51, -74, -41, 29, -14, 46, 94, 67, -86, -1, -65, -98, -31, 82, 75, -16, -88, 62, -98, -90, -65, 64, 37, 82, -63, -2, 82, 39, -83, 49, -99, 74, 43, -23, 52, -20, -43, 76, -64],
         [-47, 14, 95, 76, 22, 93, 97, 27, 92, 58, -41, -28, -63, -37, 21, -11, -32, -56, 52, 65, -88, -48, -61, -43, -26, 59, -50, 48, 77, -52, -62, 95, 15, 99, -39, 74, -29, 46, 52, 60, -40, 32, 74, -20, -29, 4, -29, -84, 63, 95, 34, 24, -34, 91, -80, -14, 56, -58, -82, 40, 91, 17, 22, 12, 12, 36, -31, 12, -50, 26, -73, -65, -6, -45, -82, -30, -57, 55, 63, -87, -15, 37, -65, -95, -38, 27, -24, -88, 1, -97, -13, -47, 44, -83, 43, 64, -92, -55, 70, 29],
         [54, 47, -69, 74, 6, -60, -17, 49, -59, 31, 20, 70, 92, -73, -47, -24, -97, 7, -55, 2, 51, 92, -22, 13, 0, 93, -69, 15, -6, -17, 79, 50, -24, 17, -60, -70, -13, 27, -30, 97, 8, -26, 92, 14, 58, 96, 24, -11, -1, 94, -13, -30, -33, -17, 28, -78, -1, -4, 54, -88, -97, 19, 81, 46, -65, 37, 96, -54, -52, 89, -12, 57, 83, 12, -38, 58, -37, -31, 89, -94, 98, 98, 30, 96, -7, 12, 91, -96, 21, -14, 96, 28, 73, 46, 62, -20, -57, -7, 41, 51],
         [-7, 48, -55, 47, -81, -27, 25, 14, 36, -31, -19, 5, 64, 46, -21, 63, -56, -99, 62, 53, 64, 46, 38, -45, -52, 92, -68, 33, -65, -84, -85, 59, 99, 44, -29, 59, 25, -1, -100, 68, -36, -89, -87, -56, -18, 25, 81, 84, -9, 28, -30, 99, -2, -81, 9, -20, 87, 32, -24, -48, -64, -98, 25, -27, -79, 56, 5, -46, -9, -94, 62, -42, 71, -32, -99, 98, 0, -34, -11, 11, 7, 73, 80, 13, 65, 40, 97, 38, 93, 5, -15, -17, -5, 86, 72, 17, -10, 98, -7, -46],
         [84, -12, -15, 29, -52, -89, 68, -93, -51, -99, 45, 43, 42, 2, 85, 96, -38, 6, 85, -21, -73, -33, -18, -13, -66, -65, 95, -40, 5, -64, -90, -56, -58, 41, -95, 49, 15, -5, -29, 22, 27, 97, 19, 17, -65, -76, -57, -38, 60, 96, -9, 76, 89, 99, -85, -49, -29, -33, -66, -40, -85, -7, -55, 66, 31, 7, 42, -38, 5, 7, 99, -94, 26, -58, -61, 3, 98, -75, 50, 3, 3, -80, -22, -38, 57, 50, -2, -74, 31, -82, -29, -95, -72, 16, 69, -32, -22, 29, 72, -56],
         [-11, 96, -69, 8, -4, 84, 1, 38, -55, -82, 39, -98, -42, 49, -23, -50, -84, 11, -77, 33, 90, -97, 83, 17, -96, 50, -59, 59, 52, -33, -8, 60, -45, -70, 27, 69, -26, -42, 52, 17, -44, -44, -31, 36, -71, -53, 55, -18, 24, 57, 77, -38, 3, 15, -21, -80, -84, 81, -3, -83, 0, 25, 39, -97, 57, 84, -10, -15, 98, -47, -2, -62, 80, 86, 81, 63, -16, 58, 30, 87, 36, 76, 14, 91, 38, -82, 55, -57, -78, 40, -69, -92, 28, 65, 4, 0, -91, 85, -57, 20],
         [16, -48, 24, 23, -23, 84, -87, -16, -6, 90, -96, -23, -50, 82, 18, -66, 64, -68, 15, 51, 22, 95, 22, 34, 30, -71, 69, -68, 31, -4, -65, -96, 1, -66, 96, 46, -81, 31, 62, -28, 60, -24, -99, -40, 67, -55, -68, 26, 77, 25, -96, -53, 61, 74, 38, -39, 94, -30, 11, -93, 89, 35, -61, 5, -94, -46, -88, 100, -84, -79, 75, -47, 43, 19, -47, 49, -25, 94, 57, 68, -11, -91, 69, -39, 12, 62, -16, 79, -18, 36, 67, 96, 20, -66, 63, 73, -77, 14, 97, 56],
         [75, -20, -41, -49, 81, 62, 39, -18, 1, -82, 63, -21, -22, 79, -21, 12, 58, -83, -27, -97, -61, 62, 62, -41, 12, -86, -11, -41, 33, -75, 39, 1, -24, 57, 1, 60, 3, -98, -73, -98, -61, -81, -59, 91, -67, 42, -72, 6, -73, -37, -89, -79, 63, 41, -11, 25, 94, 60, 85, 67, 15, -46, -35, -92, 39, 98, -89, -92, 77, -83, -2, -26, -2, 50, 17, -72, -45, -3, 44, -40, -29, -32, -79, 87, -30, 52, -52, 84, -24, -6, -88, 28, 3, -38, 64, 4, 42, 80, 70, 17],
         [91, -59, 32, -11, 14, 96, -97, -59, -15, 61, 64, -78, -77, 6, 51, -5, -64, -40, 95, 13, 66, 30, 62, -5, -100, -13, 35, 12, -93, 61, 73, -76, 72, -66, 36, 89, 26, 36, 59, -100, 53, 17, -43, 31, -34, -90, 46, -37, -7, 8, -47, -88, -21, 85, 54, 19, 39, -62, 48, -92, -75, 52, -55, -81, 19, 62, 20, -77, -60, -56, -16, -26, -95, 96, 1, 37, -52, 55, -2, 13, -37, 74, -96, 22, -14, -99, 96, 98, 78, -82, 42, -39, 97, -4, -96, 21, 43, -7, -98, 24],
         [29, -36, 13, 6, -85, 41, 76, -91, -24, 3, -61, 57, -48, 52, 87, 23, -69, 33, -84, 51, 47, -96, -66, -26, -71, 7, -78, -65, -87, -13, 32, 31, 60, 23, 81, -8, 99, -4, -27, -100, 89, 92, -14, -28, 37, 74, -38, 23, 75, -29, -48, 24, 52, 56, 19, 99, 60, 91, -58, -50, -7, 37, 4, 70, 24, -53, 78, -23, 8, 1, 60, 22, -5, 69, -38, -71, -54, -53, -34, -39, 62, -19, 25, -57, -67, 69, -19, 99, 85, 98, 98, -74, -72, 76, 84, -1, 25, -100, -92, -64],
         [30, -86, -73, 36, 46, -90, -60, 23, 58, -46, 32, -26, 13, 8, -27, -75, -65, -37, 9, -24, -48, -33, 24, 27, 9, -58, -15, -14, -44, -99, -77, -48, 32, -92, 63, -94, 10, 30, -1, -59, -38, -24, 95, -46, -81, -94, 79, -30, -50, -91, 72, 100, 43, 84, -45, -98, -23, -68, 2, 23, -54, -17, -26, 84, -78, 80, -9, 59, 48, -55, -12, 39, -89, 87, -66, 11, 73, 39, 80, 25, 6, -23, 53, 73, -2, 38, 70, 75, -87, -71, 63, -57, 15, -56, -19, 8, 39, 10, -55, 52],
         [42, 5, 17, 23, -46, -96, 26, 85, 94, 63, 43, -7, 74, -2, -93, -45, -5, -77, 73, -50, -80, -43, 74, 80, 87, -89, 29, 54, -64, 94, -11, -45, -89, -97, 35, -33, 84, -89, 8, 28, 52, -2, 90, -89, -51, 62, 27, -71, -33, 5, 17, -22, 70, 49, 58, -90, -4, 59, -68, 28, -91, 60, 38, -6, 69, -3, 3, -5, 48, -75, -65, 78, 67, 52, -60, -35, 66, 10, 1, 20, 34, -27, 68, 5, 82, -95, 96, 37, 59, -63, -34, -12, -98, -43, 81, -12, 67, -25, -4, -35],
         [-68, 38, -40, 56, 30, 40, 81, -26, 50, 71, -28, 17, -18, -49, 65, -8, 46, 54, 48, -63, -32, -72, 66, 91, 48, 43, -46, -58, -84, -86, -89, 75, 97, -1, 86, -49, 28, -84, -66, 31, 92, -76, -4, 78, 59, 79, 23, -49, 76, 0, -75, -80, 92, 69, -2, -39, -79, -94, -53, -58, 26, 98, 30, -13, 73, 54, -75, -86, 13, 95, 3, -72, 53, 61, -19, -44, -61, 23, -55, 90, 40, 76, 90, -2, -84, 52, -85, -18, -48, -26, -27, 2, -33, 55, 98, -46, -70, -66, -8, -19],
         [18, -62, -100, 19, -64, 44, -52, -87, -33, -10, -85, 83, 60, 11, 28, -35, 40, 5, -39, 28, 26, -68, 16, 46, -73, -28, -7, -72, 78, 52, -90, -26, -94, -21, -28, 27, -55, -27, 9, -15, 96, -73, -50, 0, 84, 7, -82, -40, 23, 99, -53, 66, -25, 36, 11, 54, 86, -89, -32, -69, 31, -97, 54, 56, -4, 19, 84, -63, -30, -17, 92, 93, 72, -68, 3, -100, -24, 8, 13, -37, -21, -72, -7, -44, -65, 14, 34, -22, 31, 5, -36, 85, 95, 26, 43, 2, -69, 2, 64, -25],
         [-15, -65, -7, 21, -48, 82, 10, -85, 92, 58, -94, 1, 87, 47, 49, 63, 66, -28, 15, 76, -60, 94, -35, 18, -71, 45, -42, -23, -21, 90, -48, -28, 98, -72, -25, 41, 41, 57, 86, 60, -35, -36, -82, 98, -3, 38, 25, 80, -31, -12, 32, 12, -26, -99, -17, -16, -87, -1, 80, -69, 9, -27, 37, 3, -85, 49, -6, -85, 89, 30, 51, 0, -74, 40, -83, -52, 90, -2, 78, -90, 39, -39, -20, 84, 32, -100, 46, -41, 98, -25, 60, -75, -78, -37, 70, -42, -52, 40, 55, 95],
         [-23, -8, -98, 100, 89, 92, 59, 34, -90, -16, -3, -59, 90, 36, 51, -3, -92, -16, 83, 85, -49, 63, 24, 68, 14, 61, -70, 66, 44, -29, 0, -99, -96, -64, 43, 63, -42, 63, 10, 24, 40, 70, 40, 67, -45, -24, 80, -26, 97, -36, -45, -4, -68, 19, -25, -76, -81, -2, -42, -77, -23, -18, -66, -23, 90, 96, 20, 48, 2, 43, 77, 80, -24, 88, -94, 98, 77, -68, 77, 45, -93, -78, -34, 35, 76, 77, -83, 69, 46, -50, -75, -18, 93, 49, 53, 92, 17, -74, -16, -42],
         [62, 76, 17, -75, 76, 100, -17, 37, 45, -64, -46, 5, -79, 57, -28, 20, -66, -83, 74, 86, 4, -88, 15, -72, -97, 45, 7, -71, 99, 58, 32, 7, 57, 40, -13, 93, -14, -77, -53, -77, 84, -19, 42, 78, -7, -34, -1, -56, -91, 30, 31, 55, 28, 13, 55, 33, -92, -17, 50, -93, 66, -100, 86, -53, -4, -1, -76, -43, -36, 70, -59, -23, 4, 8, -30, -13, -34, -53, -43, 46, 75, 49, -48, 86, 52, -38, -3, 99, 30, -75, -35, -82, 100, 23, 44, 75, 21, 91, -59, -95],
         [16, -70, 34, 21, 15, -36, 3, 75, -4, 8, 86, -71, 64, -60, -4, -44, 99, -10, 26, 97, -97, -85, 25, -85, -14, 86, -88, -39, 38, 53, 9, 90, -97, 28, 12, -19, -87, -42, 31, 0, 40, -34, 70, -62, -94, 69, 32, 68, -49, 2, -94, -25, -31, -15, 12, -95, -15, -18, -67, -47, -21, -91, -92, -12, 59, -55, 42, 61, -24, -17, -42, -19, 85, -13, 36, 16, -7, 33, -54, -9, -54, -28, 23, 71, -35, -90, -27, -75, -25, -81, 93, 0, 73, 50, -93, -68, -98, -30, -94, -1],
         [-38, -57, -68, -73, -72, 73, -55, 90, -54, -89, -26, 87, -99, -44, 24, -86, -59, -88, -27, -87, 7, 63, 74, -1, -10, -14, 60, 97, 90, 80, -89, -39, 26, -16, 79, 95, 14, 60, 52, 69, -58, 97, 13, 18, 5, 69, -22, 1, 18, -83, 54, -29, 53, -64, -93, -18, -85, 31, -54, 5, -88, -29, -74, -62, -49, 89, 12, 99, 82, 66, 7, -30, -82, -76, -32, 18, -38, -13, 28, 15, 79, 79, 30, 69, 50, -29, -89, 4, -12, -13, 79, 30, -10, -18, -16, 1, -76, 41, 98, -43],
         [21, -31, -37, -67, -13, -79, 97, -80, -56, -93, -28, 2, 14, -91, 5, 56, 5, 96, -81, -84, 34, -27, 92, 70, -1, 93, -77, 73, -32, -16, -21, 4, -64, 87, -36, -74, 52, 18, -3, -94, -43, 11, 81, -18, -64, 18, -33, -15, 41, -31, -52, -53, -57, 11, 61, 36, -73, 86, -68, 53, 32, -93, 43, -7, 94, 20, -41, 83, 40, 85, -56, -90, 65, -7, -41, -80, -48, 93, -44, -13, 20, -97, 60, -30, -82, -94, -97, -13, -66, 97, 84, 76, 29, -43, 20, -58, -49, 19, 86, 9],
         [23, -4, 0, -64, 38, 73, -85, 100, 98, -80, -20, 20, -54, 46, 46, -35, -65, -42, 15, -91, -12, 97, 66, -58, 34, 4, -1, 72, -79, 58, 86, 71, -75, -80, 33, 48, -19, 62, 43, -79, -49, 43, 18, -73, -12, -91, 32, 93, -4, 68, -52, 54, 39, -17, 77, 80, -96, 29, 23, 65, 21, 90, -81, 33, 22, 85, 57, -74, 8, 17, -42, 67, -89, -34, 70, -67, 90, 41, 61, -35, 32, -70, -92, 100, -15, -26, -92, -83, -60, -15, -76, 34, -28, 26, -94, 27, 94, 96, 99, 81],
         [32, -75, -61, -32, 96, 51, -25, 45, -45, 95, -27, -70, -30, -99, -35, 78, 52, -64, 28, -17, -85, -47, 60, -57, 70, 0, -95, -80, -32, 29, 38, -23, -3, -19, -56, -7, -81, 29, 27, -38, 50, 45, 95, -73, 57, 84, 49, -79, 72, -77, 65, -28, -44, 50, 67, -41, 64, -83, -6, -62, 5, 16, 6, -62, -78, 52, 48, -92, 20, -93, -29, -2, 73, -85, 15, 65, -67, -35, 47, -75, -4, -96, 51, -62, 20, 26, 84, -42, 95, 6, -46, -60, -2, -29, -13, 18, -50, 57, 1, -98],
         [-29, 48, 98, -80, 7, -62, 22, -46, 56, 47, 97, -61, 22, -63, -91, 72, 89, 10, 47, 97, -1, 17, -90, 55, 45, 6, 82, -83, 25, 48, 43, -27, 59, 45, -9, 5, -10, -89, -71, -42, 57, 7, -28, -22, 38, -16, -20, 94, 12, -12, -33, 16, 80, 36, -49, -56, -87, 72, -76, -51, -7, -49, -8, -22, 72, -80, 10, -72, 6, -69, 84, 97, -42, 48, -65, 41, 89, -91, -94, -34, 85, 53, 50, 97, -85, 74, 76, -7, 64, -7, -94, -56, -54, -17, -24, -36, 16, -6, 41, -36],
         [13, -35, -15, -41, 33, 32, -53, 75, 11, -56, 6, -23, -84, 25, 73, -12, -70, -21, -71, 13, -73, -98, 99, -59, -76, -90, -69, -71, 78, 89, -70, -35, 96, -34, -63, 39, 17, 31, 95, 68, 83, 97, 83, 18, -76, -85, -24, -71, -88, 71, 59, -55, -27, -1, -41, 74, 28, -69, -4, 75, 82, -98, -91, 22, -65, 52, 89, 57, -30, -28, 53, -52, 42, -64, 82, 66, 10, -49, 95, -94, 95, -25, 28, -71, 35, 89, -37, 66, 94, -57, -56, -63, 26, 69, -14, -1, -17, -86, -65, -50],
         [-41, 21, 16, 84, -73, 6, -38, -36, -53, 33, 75, 93, -10, 77, 37, -75, -76, 97, -91, 3, -8, -47, -100, 40, -86, 76, 79, -60, 79, 10, -45, -25, 55, -65, 13, -60, 87, 82, 46, -37, 52, -90, 43, -92, 67, -74, 95, -10, 72, -22, 49, 70, 26, 60, 58, -2, 30, -10, 54, -61, 39, -51, -9, -9, -41, -88, -89, 78, 22, 57, -54, -53, -74, -81, -99, -87, 72, 70, -91, 8, -33, 88, 34, 51, -31, -86, -6, -36, 68, -91, 59, -96, -52, 60, 77, -24, 72, 80, 52, -79],
         [-10, -71, 14, 83, 66, 15, 0, 99, 65, -48, 88, 23, 80, 28, -2, -38, 7, -71, -87, 88, 25, 18, -57, 10, -23, -46, -52, -37, 87, 22, 43, -25, 31, 54, -22, 10, -7, -87, 4, -69, -14, -83, -42, -65, 35, 59, 16, -41, 73, -2, 88, 2, -83, -67, -27, -75, 93, 13, -18, 48, 19, 22, 48, 18, 14, -20, -25, 5, -75, 43, -16, -29, 53, -72, -68, 78, -80, 3, 11, 87, -5, 21, -95, -1, 43, 11, -96, 93, -39, -67, 91, 68, 91, 96, -52, 54, 84, -29, -92, -86],
         [85, -32, 63, -68, -69, -96, -53, -3, 74, -62, 34, -13, 82, -15, -78, -80, -84, -49, -9, -73, 79, -47, 24, 93, -35, -46, 24, -21, 81, -32, 71, -30, 2, 89, -48, 2, 26, -51, 18, 99, 6, 17, 67, -80, -42, 44, -16, 4, 65, -67, 96, -18, -84, -7, -96, 20, -78, 6, -19, 91, 96, -51, -74, -2, 71, -39, 85, -2, 100, 44, 10, 47, -52, -85, 30, -8, -98, 81, -19, 48, 61, 28, 48, 57, -91, -61, 62, 100, 47, -57, -80, 67, -19, 12, -69, 94, -70, -51, 33, -9],
         [80, 87, -46, 78, 56, 48, 44, -32, -65, 8, 27, 25, 40, 53, -70, 60, -6, -77, -45, -76, 91, -90, 82, -49, -43, 10, -62, 65, 35, -27, -86, -54, 33, -54, -74, 29, -46, 72, 91, -14, -90, -2, 7, 49, 5, -77, -83, 21, 80, -75, -53, -46, 38, 77, -71, -73, -67, 4, -31, 98, -9, -26, -88, 13, 60, 45, -70, -84, 78, 72, -12, -23, -22, 89, -58, -71, -49, -53, 6, 19, -100, 25, 88, 39, -86, 44, 42, 94, 95, -80, -19, -48, -12, -82, -80, -67, -17, 55, 3, -51],
         [-13, 31, 13, -44, -55, 51, 72, 18, -68, -27, 100, 97, 32, -39, 57, 46, 55, 9, -79, 95, 45, 68, 88, 3, 40, 14, -7, -11, 82, -10, 61, 56, 26, 22, -79, -89, 21, 39, 57, -75, -55, -3, 46, -35, 79, 65, 80, -88, -18, -62, 75, -52, -25, -35, 48, -9, -79, -57, 45, -77, -86, -27, 27, -65, -13, 76, 84, 97, -76, -55, 18, -84, -49, -56, -50, 25, -75, 60, 89, -44, -19, -94, -82, 94, 64, 98, -78, 41, -61, -94, -96, 29, -39, 84, -33, -86, 60, 64, -21, -41],
         [72, -33, -32, -91, -91, -56, -21, -34, -62, -69, 15, -57, -94, -88, 44, -95, 91, -47, 28, 51, -96, 80, 41, -28, 86, 99, 79, 15, -29, -33, -75, -70, 15, 34, -10, -74, 76, 89, -51, 51, 39, -84, -59, -74, -61, 8, 69, 96, 82, 14, 58, -81, 77, -94, 43, 66, 99, -75, 14, -41, -7, 66, -2, 45, 71, -12, 48, 38, -66, 32, -57, -29, -72, 54, 52, -92, -87, -11, -13, -50, -42, 39, -72, -90, -90, -39, 4, -87, 26, 84, 0, -93, -84, -95, -24, 29, 52, 55, -52, 31],
         [-97, 7, -90, -54, -87, -6, 96, -65, 99, 82, 32, -9, -48, 92, -21, 90, -89, -90, -24, -52, -72, 39, 8, -94, -61, 44, 30, 95, 0, 86, 8, 100, 48, 10, -47, -71, 19, -54, 51, -63, 1, 92, 40, -48, -56, 41, -39, -84, 71, -18, -12, 55, -9, -85, -82, -71, 30, 57, 84, 59, 36, -3, -37, 23, -7, 28, 64, 1, -76, -9, -64, 26, -12, 56, -30, -27, 33, 93, 1, 100, 75, 78, -15, -90, 73, 57, -41, -54, -8, -17, -16, -59, -50, 33, 81, 93, 51, 32, -44, -98],
         [38, 84, -87, -12, -62, -99, -74, -90, 37, -90, 95, -86, 1, -51, -20, -77, -79, 1, -7, 74, -4, -97, -25, 56, -25, -25, 94, -58, -49, -62, -13, 50, -84, 59, -2, -45, 39, -49, 2, -10, 52, -92, -71, 91, -98, -44, -17, -95, 1, 71, 14, -6, -25, 56, 28, 68, 58, -79, 5, -89, 10, 21, -3, -50, -91, 11, 75, -48, -4, -18, 72, -95, -22, -60, -26, 68, -10, 15, 54, 100, 20, 82, 4, 25, -75, -90, 7, -2, 72, -24, -86, 29, 41, 81, 58, 87, 48, -59, 23, 93],
         [-64, 70, 74, -28, -26, 18, -45, -89, 22, -99, -5, 91, 67, -62, 83, -59, -86, 53, 2, -85, -14, 0, 21, -10, 84, 4, -61, 13, -48, -73, -64, -95, 82, 13, 73, 3, -83, -78, -84, -44, 40, -59, -43, 21, -46, 23, -33, -67, 44, 83, -37, -14, -99, 90, -26, 3, 71, 58, 23, -23, 22, 86, -62, 97, 42, -74, -39, 98, -61, -1, 45, 12, -74, 8, -94, -17, 97, -85, 51, 49, 77, 60, -33, 5, -25, -64, -17, 35, -64, 95, 3, 50, 45, 54, -26, -65, 18, -91, 25, -89],
         [-66, 15, -8, 21, -13, 70, -9, -37, 12, 75, -29, 17, -6, -63, 100, 30, 82, 30, -76, 81, -48, 66, -24, -30, 63, -30, -76, 44, 7, -29, 2, -6, 94, -89, -49, 63, -99, -63, 51, -73, -100, -54, 6, 62, -91, -14, -5, -73, -60, 0, 12, -50, -9, 23, 39, 63, -95, 67, 8, -77, 38, 3, -42, 89, -91, 25, 43, 68, 4, 37, 87, 63, -35, 84, 66, 44, 98, -2, 36, 79, 72, 58, -62, 10, 50, -64, -39, 66, -55, 57, 46, -29, -31, -32, 44, -96, -77, 1, -92, -37],
         [54, -35, -31, 62, 83, -51, 11, 35, 36, 85, 26, 48, 11, -5, 10, 36, -55, -15, -18, -43, -52, 31, -44, -2, 68, 2, -44, 24, 5, 36, -5, 18, 0, 62, 94, 21, 67, -96, -94, -11, 32, 96, -55, 96, 78, -39, -64, -28, -14, -92, -35, 11, 57, 88, -87, -44, -72, 75, -40, -24, -35, 10, -75, -65, 29, 51, 55, -81, 100, -83, -83, -54, 99, -13, 97, 64, -18, 36, -10, 71, 27, -49, 95, -37, 28, 83, 17, 55, -11, 95, 48, -3, -32, -52, 0, -1, -65, 99, -99, 58],
         [0, -3, 9, -92, -70, 5, -60, 70, -19, -25, 60, -54, 67, 97, -67, -100, -94, -95, -1, -86, -34, -61, 61, 85, -87, 84, 6, 5, 99, -95, 47, -59, -40, -64, 2, -81, -52, 25, 52, 97, -42, 49, -16, 4, 71, -92, 20, 53, 9, 53, -42, -76, -68, 34, 35, -64, -89, 45, -33, 8, 34, -47, 26, 98, 58, -38, -2, 23, -62, -18, -60, 3, 79, -39, 51, 65, -6, 77, -13, -5, -40, 18, 26, 11, -48, 73, 71, -28, -93, -90, 30, 73, 20, -39, -30, 60, 29, 42, -52, 32],
         [39, -60, 63, 7, -93, -54, -43, -43, 91, 94, 99, -47, 84, -42, -38, -63, 70, 52, 23, -98, -26, -32, 91, -69, 85, -80, 95, -92, 85, -1, 94, 28, 25, -65, -99, 86, -97, -13, 9, -15, 98, -80, -69, 49, 73, 71, -32, 79, -80, -50, -3, -21, -99, -91, 25, 98, 76, 11, 22, 55, 51, 14, -36, 8, 60, 98, -25, -25, 71, -78, 23, 11, 3, -65, 86, 43, -39, -18, 78, 27, 5, -5, -65, -41, -28, 13, 51, 36, 65, -74, 1, 80, -95, 56, -42, -79, 7, 82, 87, 70],
         [57, -87, -20, -90, -26, 19, 79, -19, -14, 73, 89, -43, 24, 79, 38, -60, 34, 19, -28, -24, 94, 19, -25, 15, 97, -20, 26, -96, 95, 70, 26, 6, 8, 50, 62, -11, 61, -72, -8, 91, -98, 22, 76, 86, -23, 20, 17, 70, -8, -42, -23, 91, -13, -19, -78, -81, 63, -18, -28, -58, 66, -22, 13, -83, 16, -13, 21, -97, -14, 87, 54, 99, 76, 94, -99, -32, 2, 97, 17, 5, 86, 41, -50, -47, -9, -73, -71, -16, -33, -80, -73, 31, -81, 86, 41, 29, 28, 91, 22, -68],
         [-99, -39, -46, -2, 81, 99, -26, 9, 46, -21, -29, -93, 84, -87, -82, 40, 20, -60, 25, 88, 98, -88, -95, -66, 49, -32, 3, -32, 99, -7, -70, 17, 16, 13, 9, -44, -97, -62, -87, -87, 97, -70, -77, -89, -34, 54, 47, 62, -29, 67, -15, -71, -50, 84, -25, 11, 28, -72, -2, 96, 90, -33, -26, -98, 97, 23, 93, -78, -72, 6, 71, 31, -27, -39, 68, 15, -19, 29, 71, 3, -97, -57, -18, 91, -1, -69, 45, 65, -44, 26, 10, -57, -11, -48, 58, -34, -41, 31, -45, 0],
         [87, 78, 48, 77, -68, -84, 13, 29, -28, -76, -7, -68, -18, -62, 64, -32, 14, 59, 87, 54, -79, 27, -78, 24, -44, 40, 55, -41, 85, -11, -93, -24, -79, 40, -3, 36, 80, 61, -13, -37, -15, -37, -24, -98, 88, -73, -72, 32, -72, -74, 97, -18, 41, 41, 23, 46, -77, 55, -33, 27, 7, 72, -30, 69, -62, 79, 91, 53, 2, 80, 43, -70, 38, 27, 44, 89, -13, 52, 53, -89, -20, -46, -94, 18, 23, -63, 2, 96, -36, 36, 56, 38, 81, -19, 25, 32, -36, 39, -79, 76],
         [32, -31, 80, 87, -82, -22, 7, 22, 85, -99, 23, 9, -99, 15, 37, -45, -94, -99, 49, -20, -61, -31, -76, -63, 88, 46, -70, -73, -94, 58, 69, -49, 80, 91, 8, -45, 93, -55, 92, 86, -46, -54, 81, 1, -11, 87, 31, 46, -31, -43, -41, -34, 43, -46, 5, 98, -19, -55, -5, 32, -86, -60, 92, -48, -80, 78, -63, -39, 0, 23, -37, -56, -23, 20, -25, 97, 60, 100, 46, -65, 24, 73, 84, 49, -27, 97, -82, -97, -12, -44, 53, 73, -4, 87, 31, -5, 40, -99, 66, -97],
         [-5, -70, -76, -28, 8, 14, 30, -9, -66, 40, 81, -41, -85, -63, -100, -63, 26, -83, -97, 91, 82, -98, -26, 58, -34, -59, -37, 22, 95, 73, 75, 74, 83, 17, -90, 22, 27, -85, -37, 52, -24, 32, -66, 19, 37, 88, -31, 10, 5, 8, 38, -47, 50, -91, -34, -16, 76, 63, 76, -90, 35, -71, 29, 65, -9, 31, 21, 76, 20, 80, -34, -16, 61, 26, 32, 16, -13, -61, -45, -48, 4, -20, 16, -16, -15, -4, 9, 31, -98, -3, 21, 61, 93, 9, -26, -36, 21, -37, -9, -92],
         [59, -52, -95, -45, -64, -28, 11, 31, 32, -36, 38, -88, 37, 49, 85, -77, -100, 44, 79, 94, 27, 13, -68, -3, -14, 45, 61, -34, 3, -32, 99, 30, 51, 29, 72, -26, 24, 92, -98, -67, -94, 44, 19, 37, 22, 3, 35, 99, 98, 21, 67, -56, -55, -55, 13, -86, -36, 38, -50, -2, 9, 72, -73, 87, 8, -83, -89, 80, -29, 58, -1, -10, 21, 70, -9, -40, 62, 16, -95, 52, 35, 93, 71, 97, -45, 64, -19, -38, 58, -52, -69, 95, -55, 97, -50, 30, 56, 78, 10, 51],
         [-3, -9, -42, -49, -27, -7, 52, -68, -80, 29, -14, -57, 19, 9, 16, -82, 67, 44, 71, -64, -15, 31, 8, -28, -68, 23, 6, -93, 68, 58, -24, -93, -41, -23, -90, 42, -1, -47, 81, -9, 64, 34, -20, 75, 61, -94, -95, 51, 53, 72, -60, -39, 59, 28, -98, 31, 34, 55, -47, 61, 11, 38, 19, -6, 42, -29, 77, 100, -93, -12, -22, 13, 5, 11, 66, -83, -93, -34, -24, -81, -83, -63, -10, -95, -55, 19, -13, 31, 43, -22, 82, -33, 34, 39, 40, -73, 79, -74, 20, 91],
         [48, 98, -70, 93, 44, 35, 58, -83, -21, -72, 9, 55, -76, 71, -45, 17, -28, -52, 89, 32, -1, -43, 31, -73, 12, -85, -55, -75, 71, -26, -14, -48, 18, -47, -68, -39, 33, 74, -8, 25, -41, 15, -38, -10, -26, -35, 78, -6, -16, -1, -58, 29, 94, -73, 54, 0, 39, -29, -13, -86, 35, 98, -69, -45, -80, -91, 96, -78, 44, -100, 17, 44, -48, -61, -66, -41, -72, -19, 19, -83, 2, -2, 37, 24, 25, -74, 52, 29, 23, 64, -97, 61, -77, 62, -38, -82, 17, 41, -14, 61],
         [86, -10, -1, -8, -51, -95, -66, -2, 31, 82, 63, 28, -31, 63, 7, 45, 26, 32, 66, 40, 97, 50, 75, 63, -8, 96, -67, -25, -62, 13, 71, -92, -74, 45, 12, 18, -60, -36, 30, -40, 67, -28, 56, -60, -41, 40, -67, 0, -52, -35, -62, 32, 45, 8, 89, -38, 77, 52, 29, -73, 28, 63, -67, -39, 82, 60, -86, 58, -71, -39, 91, 63, -60, -4, -35, 83, -37, -94, 89, 4, -49, -22, -23, 94, -56, 63, -10, 50, 17, 35, -77, 59, -100, 56, -69, 88, -95, -95, -32, -87],
         [89, 81, 82, 49, 81, -70, 97, 37, -48, 62, -3, -57, 48, -50, 55, -92, 14, 16, -67, -10, 54, -10, 62, -5, -31, -64, -13, -61, 77, -4, 14, 73, -82, -88, -77, 17, 20, -29, 6, -43, -59, -77, -7, -71, 36, 94, 89, 90, 9, 54, -80, -6, 99, 67, -57, -11, -96, -45, -19, 42, 22, 63, -33, 65, 75, -95, -18, -35, 91, -68, 64, -64, 34, -97, -52, 51, -97, 5, 32, 74, 95, -34, 1, 73, 7, 63, 19, -79, -77, -18, -28, 95, 3, 35, 38, -23, 78, -89, -50, -88],
         [-64, 3, 93, 8, -13, 8, -82, -93, -22, -30, -13, -73, 77, -53, -15, 100, 33, 65, 29, -81, 84, 40, 35, 1, -87, 31, -67, 37, 75, -14, -64, -7, -61, -79, 38, -8, 47, -34, -89, -26, -78, -50, 3, -16, -73, -99, 92, -56, -15, -75, -41, -16, -19, -22, 67, -12, -97, -12, 56, -29, 72, 82, 45, -67, 63, 85, 45, 88, -54, -16, 19, 28, 67, -89, -87, 53, -2, -91, 77, 9, 73, -20, 8, -94, -93, 93, 2, -58, 67, 2, 26, 88, -49, 33, -24, 61, 2, 18, -33, -92],
         [53, 3, 54, -54, -57, -30, 26, 30, 29, -90, -47, -76, -39, -41, -55, -67, -83, 58, -100, 71, -30, -59, 58, -97, -43, 89, 6, 34, -4, 29, 33, -5, 40, 66, 87, -19, 12, -49, 39, 43, 79, -9, 74, -11, -53, 26, 16, 9, -9, -94, 63, -99, 53, 93, -3, -42, 40, 73, -86, 9, 65, 27, 17, -17, -31, 92, -32, -65, -88, -92, -34, -57, 64, -78, 94, -5, -37, -67, 97, -14, -36, -14, -74, -56, 13, 54, -99, -17, -74, 74, -77, 73, 94, -64, 53, -64, 60, -62, -91, 69],
         [-39, -19, 94, 42, 76, 66, 7, 0, 1, -82, -31, -55, -69, 14, 2, 84, 3, -52, 62, 74, -65, -99, -26, -72, -73, -3, -96, 99, 66, 40, 82, -43, -59, -50, -29, 86, -21, -79, -42, 40, -62, 77, -29, -10, 95, -53, -25, 21, 17, 41, -82, -98, 44, 7, 89, 40, -38, -8, -23, -94, -60, -94, -54, 0, -53, -75, -86, 34, 74, 62, -41, -92, -39, 18, 69, -31, 50, 89, 64, -19, 79, 69, 89, 53, -49, -4, -61, 40, 69, 11, -54, -49, 87, -61, -30, 73, 87, -8, 86, 2],
         [-16, 42, 72, 77, 30, -43, -24, 64, 59, -55, 99, 97, 43, 45, -60, -22, -40, 61, -19, 17, 42, -95, -20, 25, 22, -47, 47, -11, 78, 77, -98, 23, -89, 13, -25, 85, -81, 21, 26, 44, 62, 67, -1, -27, -72, 25, -63, -17, -39, 85, 38, -92, 98, -63, -79, 97, -21, -99, 16, -75, 47, -3, -31, -86, -30, -90, 75, -3, 96, -12, 47, 4, 31, -69, 83, -13, 36, 4, 53, 97, -13, 72, 9, 74, 40, -26, 50, -83, 92, 99, -33, -96, 14, 92, -18, -93, -95, 77, -76, 45],
         [-18, -51, -39, -8, 3, -16, -22, 45, -87, 84, 9, -22, -66, -18, 53, -64, 89, 22, 61, 16, 95, -42, -84, 28, -26, -62, 36, -71, 61, 12, 65, 74, -13, 84, 18, -41, -64, -35, -27, -81, 56, -6, 36, 93, -19, -90, 44, -77, -71, 65, 81, -43, -10, 31, -74, 57, -13, -52, 18, -46, 85, 75, -100, -37, 50, -18, 14, -41, -92, -65, 14, -95, 89, 48, 36, 43, 13, 86, 55, -70, -87, 65, -27, 61, 32, -65, -48, -50, 45, 86, -18, 21, 78, 61, 79, -46, 6, 44, -72, 41],
         [-69, -66, -8, -18, -66, -7, 67, 82, 7, 97, -64, -73, -59, 91, -4, 77, -51, 52, 84, 94, -39, -21, 5, 56, -88, -1, 1, 70, -75, -64, 66, 43, -30, 12, -58, 13, -41, -90, -89, 83, -96, -89, -42, 14, 35, -18, -44, -32, 30, 32, -30, 90, 95, -42, -10, 67, -27, 29, 13, -58, -3, 31, 36, 49, -62, 81, 31, 67, -46, 16, -99, 60, 17, 47, -64, -67, 37, -88, -23, 7, 4, 52, 19, -31, -24, 85, -81, -88, 84, -90, 10, -72, 20, -82, -13, 26, -64, 33, 29, 93],
         [42, 19, -68, -76, -47, 35, 24, 18, 98, -3, 14, -96, 84, 75, 97, -94, 1, 7, 89, 71, 83, 34, -26, 24, 67, 26, 83, -78, -76, -20, -84, -2, 97, 24, 85, 72, -71, 52, 100, 21, 28, -60, -26, -37, -42, -67, 14, 22, 83, -3, -69, 3, -20, 5, -11, 42, 67, 52, -60, -17, 31, -80, -11, 54, 45, 85, -85, -98, 20, -82, 68, 19, 18, 8, 35, -33, -30, 100, 0, 33, -64, 43, 54, 70, -62, -48, -65, 75, -53, -55, -45, -48, 92, 87, -57, 11, -48, -84, 7, 30],
         [34, 51, 81, 79, -52, 35, -26, -67, 6, -49, 23, -55, 89, -61, -35, -13, 54, 100, -36, 54, -24, 27, -45, -79, -96, -89, -41, 18, 25, 1, 66, 43, 80, -6, -29, 40, -68, 91, 60, 4, 53, -40, -8, -66, -88, 81, 91, 97, -96, 64, 92, 79, -38, -6, -41, 74, -43, 96, 94, 36, -56, 46, -79, 74, 4, 95, 16, 26, 20, -91, 92, 33, -22, -20, -71, -69, -32, 38, -44, 88, 53, 31, -74, 44, -70, 37, 29, -46, 50, -60, 41, 5, 63, 27, -96, -42, 26, 62, -27, 77],
         [19, 71, 86, 72, -51, -33, 39, -50, 39, 64, -31, 75, 21, -45, -33, -39, 9, 50, -43, -58, 45, -8, 41, 73, 78, 11, -1, 22, 4, -65, 71, -17, 8, -7, 20, 26, 43, 51, -74, -41, 41, -47, -27, 9, 42, -60, -88, 88, 74, -34, 96, -68, -42, 60, -14, 90, 41, -42, 46, 42, 30, 84, -58, -82, -10, 74, 9, -3, 89, -78, 8, 61, -60, -46, -27, -84, 68, 84, 63, 64, 65, -72, -55, -71, 84, 44, -53, -65, 53, -39, 90, 17, -40, 15, 38, -77, -76, -1, -48, -71],
         [44, -93, 23, 44, 45, -14, -45, 53, -88, 85, 67, 31, -79, 35, -49, 46, -23, 73, 73, 34, -46, 61, -17, 65, 59, -68, -34, -55, -25, 4, -55, -54, 19, -22, 18, -65, -30, 7, -11, -6, 55, 82, -53, -72, -87, 92, 31, 14, 2, -8, 77, 38, 31, -70, -60, 9, 92, -14, 18, 36, -68, -64, 30, 5, -39, 64, 94, -15, 45, -24, -24, -55, -54, 44, 95, -37, -92, -96, -51, 99, -13, 4, 0, 62, 88, 32, -4, 21, -70, 79, 9, 80, -89, 52, 17, -38, -97, 97, -7, 44],
         [10, 95, -73, -53, -77, 12, -14, -83, -98, -3, 98, 92, 18, -36, -26, -25, 8, 3, -24, -49, -1, -78, 39, 26, -15, -36, -41, -43, 29, -93, 90, -33, 72, 31, -62, 89, -38, -17, -87, -60, -82, 78, -53, 91, -70, 21, 89, -2, 24, -82, 66, -39, -17, 10, 90, -54, -5, 75, 57, 36, 47, -70, 13, 91, -23, 3, -70, 57, -91, 43, 17, 47, 66, 84, 53, 50, 60, -87, -64, -84, 87, -44, -99, 82, -61, -33, 5, 95, 46, -31, 65, 2, 36, -98, -13, 51, -6, -35, -75, -75],
         [85, 35, 42, -64, -13, -87, 90, 86, 89, 25, 4, -77, -3, -96, -9, 47, -35, -100, 29, 33, -58, -30, -71, 53, -93, 20, 65, -96, -66, -51, 37, 85, 80, -44, 0, -57, -64, 38, 48, 25, 93, -91, -55, -41, 25, -22, -39, 53, -94, 46, -31, -57, -71, -97, -20, 44, -38, -63, -38, 23, -73, 49, -89, -41, 54, -28, 77, -53, -23, 57, -18, -54, 11, 47, 33, 61, 52, -50, -64, 62, -4, 92, 52, 13, -40, 15, 51, 74, 35, 38, -22, -9, 36, -63, 30, -50, -95, 57, -57, -49],
         [16, -68, -94, 69, 10, 42, 51, -97, 57, -20, -77, -67, 27, 86, 52, -25, 37, -78, -3, 3, 28, -55, -61, -5, -51, 39, 84, -35, -67, -4, 41, -13, -14, -54, -90, -11, 47, -34, 56, -82, -77, -97, -67, 83, 6, -59, -41, -97, -40, -75, 34, -64, -17, 56, -55, -45, -51, 27, -89, 77, 22, 19, 81, 56, 23, -35, -72, 54, 6, -78, 73, -90, 72, -23, -91, -75, 19, 98, 1, -4, 8, 44, -92, -7, 36, -8, -68, -7, 83, 62, 3, -83, 18, -68, -83, 7, -100, 59, 60, 80],
         [82, -72, -91, 71, 58, 34, 84, -41, 28, -92, -67, -18, 80, -76, 56, -41, -73, 58, 22, -92, -87, -46, -27, 32, -18, -6, 96, -97, 82, -35, 43, -57, 6, 74, 5, 91, 54, -65, -87, 46, 33, -17, -77, 16, -84, 48, -2, 40, -62, 10, 61, 38, -49, 10, -16, -25, 6, -54, -34, -37, -63, 50, 0, 1, -6, -17, 44, 45, -50, -81, 41, -57, 99, 55, 8, 87, 18, 90, -81, 2, -26, -6, 64, 88, 27, -13, 9, 23, 93, 81, -29, -60, -37, 22, -49, -75, 35, 21, -95, -43],
         [19, 37, -93, -84, 66, 11, -90, -90, -60, -21, 75, -66, 38, -19, -69, 79, 8, 1, -18, -5, -76, -81, -99, 22, -48, 32, 48, -78, 18, 26, -37, 98, 26, -40, 69, -77, 1, -87, -74, -86, 89, 23, -55, 14, 90, 17, -54, 27, -64, 54, 14, -9, 24, 33, 7, 6, -14, 33, 23, 7, 71, -55, -92, 14, -18, 37, -64, 78, 19, -42, -37, 7, -45, -18, -62, 66, -45, -42, 95, -45, -20, -24, 6, -70, 54, 29, 87, -38, -16, 29, -65, 49, 47, 6, 76, -67, 2, 68, 76, 46],
         [21, 50, -61, 97, 7, 2, -83, -4, 59, 78, 61, 69, 22, 61, -100, -9, -6, 88, 36, 12, -25, 78, 41, -68, 57, 16, -79, 85, -52, 39, -31, -15, 18, -5, 13, 62, 69, 82, 89, -77, 32, 9, -64, 72, -43, 13, 0, 26, 45, 31, -75, 48, 82, -29, 66, 1, -58, -82, 21, -63, -39, -92, 70, -66, 31, 26, 81, 75, 82, -83, 7, 55, 6, 21, -66, 39, -32, 58, 51, 48, -99, -59, -82, -94, -12, -29, 14, 94, 56, 95, 89, -59, 76, -76, 96, 16, -15, -99, 3, -94],
         [32, -83, 76, 36, 70, -74, 9, -26, -62, 2, 76, -98, -21, 95, -83, -99, 78, 53, 93, 77, -52, -99, -52, 83, -46, -92, -60, -73, -36, -65, -76, -81, -31, -41, 66, -33, -58, 38, 62, 46, -33, -13, -37, -35, 60, -23, -16, -64, -72, 29, -16, -94, -34, 15, -58, -99, 87, -23, 24, 92, -53, 70, 50, 56, -45, 21, 35, -82, -70, -84, -70, -26, 37, -30, -69, 55, -54, 88, 67, 84, -14, -85, -68, 29, -74, 23, -26, 14, 96, 47, 13, 77, 50, -71, -53, -16, 95, -62, -39, 77],
         [19, -86, 76, -35, 19, 80, -27, 16, -31, 42, -5, 79, -61, -82, -22, 54, 28, -94, -11, -64, 67, 64, -7, 96, -55, 60, -74, 80, 67, 10, -35, -83, -27, 78, -16, -11, -49, 30, 62, 8, -98, 0, -38, 80, -55, 96, 63, -34, -46, 2, -97, 6, -8, -78, -67, 24, 83, -22, -11, 76, 29, 0, -65, 71, -50, -52, 93, 47, -75, -100, -93, -61, -52, -50, -70, 15, -74, -91, -46, 27, 5, -55, -5, 98, -80, 44, 66, 82, 77, 90, -43, 28, -8, -8, 10, 20, 11, 97, 22, 73],
         [12, 30, 74, 74, 74, 52, -44, -37, 45, -78, 0, 4, 58, 87, 37, -7, -72, 13, -71, 29, -76, 39, -20, 82, -27, -44, 90, 80, 63, 41, 4, -12, -99, 32, 5, 85, -87, 14, -36, 92, 16, -89, -10, -10, 95, -15, -84, -64, 40, 73, 66, 24, -16, -83, 15, 72, 22, 37, 39, -39, -34, 93, 64, 90, -21, 23, -66, 53, 32, -36, -86, 30, -1, -44, -20, 40, -100, 80, -30, 7, -87, -42, 7, -91, 58, -72, -22, 14, 23, -69, 69, -76, -36, -2, -5, -5, 72, -59, -30, 88],
         [-72, 95, 73, 84, -93, 64, 52, -62, -55, -28, -25, -84, 95, 68, 96, -80, 17, -100, 53, 15, -64, 45, -24, -46, 55, -56, 46, -70, -90, 48, -44, -67, 78, 6, -59, 43, 0, 61, -55, -37, 63, -90, -89, -83, -92, -17, 92, -47, 60, -11, 22, -15, -28, 62, -10, 17, -68, -53, 98, -78, 30, 77, 46, -86, 77, -86, 75, 24, 95, -84, 19, 29, 82, 24, -21, -41, -76, -98, 43, 3, -29, 23, -66, -80, -63, 71, 31, 41, 41, -47, -92, -97, -93, -6, -21, 25, -34, 58, -19, 42],
         [-56, -9, 49, 35, -85, -77, -4, 32, -76, 42, -7, 65, 29, 80, 0, -81, 1, 22, 55, 82, -43, 13, 37, 33, -84, -79, -3, 3, 46, -49, 34, 66, 52, 2, -12, -52, 54, 35, -73, -37, -63, -8, 3, 80, -25, -13, -52, -54, -81, -61, -48, 41, -38, -83, 83, 80, -38, -5, -4, 13, 59, -6, 26, 5, -50, 57, 3, 18, -72, -5, -8, -48, 72, -22, -90, -76, -80, 74, 37, -41, 10, -39, 74, 7, -49, 79, -84, -54, -36, -85, 44, 35, -56, -95, 72, 39, -25, -3, 48, -64],
         [-17, 80, 57, -16, -69, 81, -12, -7, 65, -1, 29, -72, 63, 79, -6, 40, -18, 88, 67, -82, 65, 18, -91, -58, 29, 78, -98, 44, 33, -59, -4, -41, -81, -9, 46, 7, -34, 50, 51, 2, -60, 52, -91, 66, -47, 40, -43, -73, 35, 79, 75, 34, -46, -70, 95, -33, 96, 61, -66, 46, 9, 97, -90, 15, -98, 86, -35, 62, 63, -23, 51, 10, -67, 74, -85, -45, 25, 87, 19, -52, 39, 47, 20, -11, 35, -37, -22, 70, -63, 78, -62, 92, -85, -87, -30, 63, -6, 57, 64, 47],
         [82, 3, -71, 53, 43, -27, -47, 9, -23, -57, -26, -41, -54, 79, 21, -71, 88, -72, 52, 32, -26, -3, -12, 76, 82, 28, 73, -69, -72, 32, -80, 11, 21, -30, -11, -12, 23, 14, -77, 51, -79, 3, -18, -91, -21, -59, 100, 83, 7, -38, -79, -62, -51, 62, -62, -52, 93, -34, -15, -77, -33, -45, 40, -81, 71, 88, -63, -82, 67, -67, -32, -34, -80, -97, 2, -67, 30, -11, -52, -64, 37, 31, -88, -18, 19, 28, 12, -87, 7, -78, -17, 59, 83, -70, -39, -8, -13, 49, -75, -12],
         [39, -25, -18, 11, -86, 15, -86, 42, -4, 15, 69, 45, 72, -25, -8, 19, 68, -24, -9, -37, 9, -34, 26, -13, 49, 93, 21, 0, 20, 21, -52, 70, 29, 26, 79, 98, 14, 62, -84, -43, 34, -31, 66, 90, 92, -17, -37, 81, -70, -61, -76, 93, 50, -91, -18, 88, 76, 19, -91, 4, -60, -57, -72, -97, -54, -95, -84, -51, -20, 47, 69, -11, -84, -34, 15, 68, 52, 31, 13, 51, -56, -8, 8, 7, -34, -92, 6, -88, 17, 77, 68, 50, -56, -17, 35, -59, -93, 2, -26, 35],
         [-48, 90, 80, 18, -61, -22, 24, 62, -49, -72, 42, -43, 46, 45, -36, -35, 59, 6, 66, -24, -51, 37, -48, -92, 12, 98, 12, -45, -32, -77, 5, -56, 60, 93, 20, 91, 48, 36, 90, -49, 81, -65, 56, -46, 83, 39, 50, 91, 43, 72, 93, -33, 5, 25, -58, 58, 85, -79, 95, 96, -37, -56, -49, -9, 42, -41, -31, 20, -56, -86, -33, 77, -64, -77, 40, 43, 73, -31, -2, -1, -65, -36, -21, 9, 58, -79, -64, 22, 22, -24, 62, -52, 60, -47, 99, 69, -59, -78, -3, -3],
         [-77, 50, 4, -53, 19, 78, -6, -97, 18, -83, -67, 60, 7, -65, 86, 12, -30, 41, -62, 18, 73, 91, 11, 62, 60, -4, 52, 28, -33, 46, -67, -84, 52, -16, -86, 86, 91, 81, -85, -8, 94, 50, -39, 63, 53, -98, -80, -60, 3, -62, -47, 82, 16, 98, 68, -89, -94, -36, 18, -49, -25, -35, -17, -24, 81, -17, 6, -53, -45, 88, 73, 22, -1, -82, 78, 99, -83, 70, -74, 89, -89, -62, 93, 33, 3, 69, -89, 13, -78, -60, -19, -2, -27, -69, -81, 100, 21, -11, 14, -7],
         [0, -82, -80, -17, -62, -24, -81, -59, 14, 78, -86, -92, 31, -58, -22, 92, 67, 12, -54, -96, -8, 51, -19, -33, -76, -11, -2, 21, -6, -30, 81, -18, 92, -18, 78, -12, 20, 56, 6, 55, -13, 5, 86, 32, -75, 6, 56, 93, -31, -51, 0, 83, -3, 50, -23, -72, -25, -38, 35, 26, 47, 85, 41, 95, -48, 81, 67, -61, 100, -43, -35, 5, -29, -20, 81, -9, -14, -28, 34, 70, -17, 1, -12, -5, -53, 9, 76, -29, -11, -10, 61, 99, -99, -72, -20, 56, 100, 2, 42, 71],
         [-41, 8, -45, 95, -46, 50, 9, -74, -12, -27, -49, -25, 36, -37, 0, 8, 91, -60, 18, 75, -8, -77, 12, 59, -30, 82, 80, 68, 40, -78, -71, 36, 53, -11, -89, -29, 47, -52, 20, 2, -47, 56, 57, -41, -66, 71, 61, -45, -5, 20, 15, -48, -54, 15, 93, -28, -73, 47, 63, 39, -21, -34, 21, 88, -79, -72, 83, -91, -7, 29, 25, -81, -76, 3, -76, -88, -99, 22, -79, 64, -47, 71, 75, 12, -5, 42, -30, 58, 66, -50, -38, -51, -15, -63, -38, 45, 63, -61, -4, 68],
         [36, -53, -65, -35, 57, 16, 10, 38, 86, 3, -1, 26, -92, 91, 28, 91, 10, -79, 17, -67, 83, 67, -45, 98, -79, -37, -23, -74, -97, 20, -25, 52, 0, -18, 25, -99, -3, 54, 31, 56, 72, 53, 22, 90, -1, 30, 89, -2, 45, 60, 42, -95, 90, -22, 16, 47, 72, -32, 70, -66, -71, -95, 44, -61, 40, 17, -59, 16, -74, -92, 7, -12, 90, -20, 7, -35, 54, -20, 16, -89, -96, 50, 35, -23, 97, -100, -6, -48, 96, 49, 26, -62, 41, 79, -43, -72, 46, -97, -64, -88],
         [-67, 4, -21, -40, -50, 70, -2, 26, 27, 3, 73, 4, -94, -48, 16, -80, 26, 55, 20, -12, 74, 66, -83, -8, -96, 84, -78, 74, 81, 61, 32, 63, -70, 48, 9, -21, -65, 44, -46, -85, 60, 14, 64, -3, 91, 91, -13, -23, 95, 12, 50, 16, 7, -3, -24, 2, -15, 10, 43, 38, 43, -22, -88, 23, -26, 17, 83, -97, -13, -42, 75, -57, 81, 45, -32, 95, -9, -76, -33, -13, -97, -49, 63, -38, 40, -10, 17, 30, 64, -49, -6, -10, 31, -41, -72, -68, 20, -1, 46, -84],
         [-57, 49, 94, 3, 83, -65, 42, -39, -100, 72, 77, -56, 74, -83, 18, 53, 0, 100, 2, 39, -38, 94, 95, 87, 11, -83, -72, -36, 38, -25, 44, 2, 81, -18, 49, -93, -93, -58, 11, -56, 25, 78, 14, 43, 67, 87, 55, 9, -8, -94, -60, 18, 79, 94, 43, 80, 70, 42, 17, -35, 97, -70, 28, -8, 27, -6, -39, 32, -96, -98, -63, -59, 80, -10, -5, -44, -7, -72, -27, -76, 61, 92, -91, -17, -94, 99, 79, 22, -19, -35, 41, -83, 81, 50, -68, -38, 49, -17, -34, 83],
         [62, 54, -40, -16, -78, -63, 91, 83, -84, 92, 2, 19, -5, 99, -49, 23, -93, -74, -56, 42, 97, -31, -74, 79, -57, -80, 25, 40, -82, -53, 71, -72, 32, 87, -15, 83, -76, -39, 33, -62, 53, 52, -23, -61, 43, -70, -81, -66, 61, -37, 75, -97, 75, 21, -21, -17, 55, 51, -82, 38, 20, -58, 100, 31, 9, 60, 5, -15, 28, 1, -73, 50, -60, 9, 45, 94, -20, -91, -71, 10, -26, -88, 58, -76, 22, 20, 46, -8, 52, 20, 69, -16, -38, -13, 87, -22, 94, 55, -56, -79]]

    su=0
    su2=0
    su3=0
    z1=[]
    TWO_PI = 2.0 * math.pi
    cos = numpy.cos
    sin=numpy.sin
    for i in range(0,30):
        A=0
        B=0
        for j in range(0,30):
            A=A + (a[i][j]*sin(alpha[j])) + (b[i][j]*cos(alpha[j]))
            B=B + (a[i][j]*sin(x[j])) + (b[i][j]*cos(x[j]))
        su=su+(A-B)**2
    s=su+bias
    return s


def F13(x):
    dim=len(x);
    o=.1*((numpy.sin(3*math.pi*x[1]))**2+sum((x[0:dim-2]-1)**2*(1+(numpy.sin(3*math.pi*x[1:dim-1]))**2))+
    ((x[dim-1]-1)**2)*(1+(numpy.sin(2*math.pi*x[dim-1]))**2))+numpy.sum(Ufun(x,5,100,4));
    return o;

def F14(x):
     aS=[[-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32],[-32,-32,-32,-32,-32,-16,-16,-16,-16,-16,0,0,0,0,0,16,16,16,16,16,32,32,32,32,32]];
     aS=numpy.asarray(aS);
     bS = numpy.zeros(25)
     v=numpy.matrix(x)
     for i in range(0,25):
         H=v-aS[:,i];
         bS[i]=numpy.sum((numpy.power(H,6)));
     w=[i for i in range(25)]
     for i in range(0,24):
        w[i]=i+1;
     o=((1./500)+numpy.sum(1./(w+bS)))**(-1);
     return o;

def F15(L):
    aK=[.1957,.1947,.1735,.16,.0844,.0627,.0456,.0342,.0323,.0235,.0246];
    bK=[.25,.5,1,2,4,6,8,10,12,14,16];
    aK=numpy.asarray(aK);
    bK=numpy.asarray(bK);
    bK = 1/bK;
    fit=numpy.sum((aK-((L[0]*(bK**2+L[1]*bK))/(bK**2+L[2]*bK+L[3])))**2);
    return fit

def F16(L):
     o=4*(L[0]**2)-2.1*(L[0]**4)+(L[0]**6)/3+L[0]*L[1]-4*(L[1]**2)+4*(L[1]**4);
     return o

def F17(L):
    o=(L[1]-(L[0]**2)*5.1/(4*(numpy.pi**2))+5/numpy.pi*L[0]-6)**2+10*(1-1/(8*numpy.pi))*numpy.cos(L[0])+10;
    return o

def F18(L):
    o=(1+(L[0]+L[1]+1)**2*(19-14*L[0]+3*(L[0]**2)-14*L[1]+6*L[0]*L[1]+3*L[1]**2))*(30+(2*L[0]-3*L[1])**2*(18-32*L[0]+12*(L[0]**2)+48*L[1]-36*L[0]*L[1]+27*(L[1]**2)));
    return o
# map the inputs to the function blocks
def F19(L):
    aH=[[3,10,30],[.1,10,35],[3,10,30],[.1,10,35]];
    aH=numpy.asarray(aH);
    cH=[1,1.2,3,3.2];
    cH=numpy.asarray(cH);
    pH=[[.3689,.117,.2673],[.4699,.4387,.747],[.1091,.8732,.5547],[.03815,.5743,.8828]];
    pH=numpy.asarray(pH);
    o=0;
    for i in range(0,4):
     o=o-cH[i]*numpy.exp(-(numpy.sum(aH[i,:]*((L-pH[i,:])**2))));
    return o


def F20(L):
    aH=[[10,3,17,3.5,1.7,8],[.05,10,17,.1,8,14],[3,3.5,1.7,10,17,8],[17,8,.05,10,.1,14]];
    aH=numpy.asarray(aH);
    cH=[1,1.2,3,3.2];
    cH=numpy.asarray(cH);
    pH=[[.1312,.1696,.5569,.0124,.8283,.5886],[.2329,.4135,.8307,.3736,.1004,.9991],[.2348,.1415,.3522,.2883,.3047,.6650],[.4047,.8828,.8732,.5743,.1091,.0381]];
    pH=numpy.asarray(pH);
    o=0;
    for i in range(0,4):
     o=o-cH[i]*numpy.exp(-(numpy.sum(aH[i,:]*((L-pH[i,:])**2))));
    return o

def F21(L):
    aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]];
    cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5];
    aSH=numpy.asarray(aSH);
    cSH=numpy.asarray(cSH);
    fit=0;
    for i in range(0,4):
      v=numpy.matrix(L-aSH[i,:])
      fit=fit-((v)*(v.T)+cSH[i])**(-1);
    o=fit.item(0);
    return o

def F22(L):
    aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]];
    cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5];
    aSH=numpy.asarray(aSH);
    cSH=numpy.asarray(cSH);
    fit=0;
    for i in range(0,6):
      v=numpy.matrix(L-aSH[i,:])
      fit=fit-((v)*(v.T)+cSH[i])**(-1);
    o=fit.item(0);
    return o

def F23(L):
    aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]];
    cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5];
    aSH=numpy.asarray(aSH);
    cSH=numpy.asarray(cSH);
    fit=0;
    for i in range(0,9):
      v=numpy.matrix(L-aSH[i,:])
      fit=fit-((v)*(v.T)+cSH[i])**(-1);
    o=fit.item(0);
    return o

def getFunctionDetails(a):

    # [name, lb, ub, dim]
    param = {  0: ["F1",-100,100,30],
               1 : ["F2",-100,100,30],
               2 : ["F3",-100,100,30],
               3 : ["F4",-100,100,30] ,
               4 : ["F5",-30,30,30],
               5 : ["F6",-100,100,30],
               6 : ["F7",0,600,30],
               7 : ["F8",-32,32,30],
               8 : ["F9",-5,5,30],
               9 : ["F10",-32,32,30],
               10 : ["F11",-0.50,0.50,30] ,
               11 : ["F12",-3.14,3.14,30],
               12 : ["F13",-50,50,30],
               13 : ["F14",-65.536,65.536,2],
               14 : ["F15",-5,5,2],
               15 : ["F16",-5,5,4],
               16 : ["F17",-5,15,2],
               17 : ["F18",-2,2,2] ,
               18 : ["F19",0,1,3],
               19 : ["F20",0,1,6],
               20 : ["F21",0,10,4],
               21 : ["F22",0,10,4],
               22 : ["F23",0,10,4],
            }
    return param.get(a, "nothing")
